25

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

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

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

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

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

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

4

1 に答える 1

38

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 は最初のオブジェクトを調べ、そのオブジェクトの形式に基づいてエミュレーションを自動的に選択する必要があります。

于 2013-04-14T21:16:48.487 に答える