web-dev-qa-db-ja.com

GNUリンカーに32ビットELF実行可能ファイルを生成させる

こんにちは私は現在、作成中のコンパイラ用にx86アセンブリを生成しており、64ビットVM(アセンブリコードは32ビット)でファイルをリンクするのに問題があります。

このコマンドでオブジェクトファイルをうまく組み立てることができました:

as --32 mult.S -o mult.o

しかし、32ビットELFファイルを生成するldのオプションが見つからないようです。

ld <some-option?> mult.o -o mult

どんな助けでも素晴らしいでしょう。

18
Hunter McMillen

ld <some-option?> mult.o -o mult

ld -m elf_i386 mult.o -o mult

次の方法で利用可能なアーキテクチャのリストを取得できます。

ld -V

サンプル出力:

GNU ld (GNU Binutils for Ubuntu) 2.24
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   i386linux
   elf_l1om
   elf_k1om
   i386pep
   i386pe

ただし、これは必須ではありません。ldは最初のオブジェクトを調べ、そのオブジェクトの形式に基づいてエミュレーションを自動的に選択する必要があります。

29