こんにちは私は現在、作成中のコンパイラ用にx86アセンブリを生成しており、64ビットVM(アセンブリコードは32ビット)でファイルをリンクするのに問題があります。
このコマンドでオブジェクトファイルをうまく組み立てることができました:
as --32 mult.S -o mult.o
しかし、32ビットELFファイルを生成するld
のオプションが見つからないようです。
ld <some-option?> mult.o -o mult
どんな助けでも素晴らしいでしょう。
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は最初のオブジェクトを調べ、そのオブジェクトの形式に基づいてエミュレーションを自動的に選択する必要があります。