質問: どのようにして64ビットLinux上で32ビットバイナリをアセンブルするためにGas( 'as')を使用できますか? どのように64ビットLinux上で32ビットバイナリにソースをアセンブルするためにGas( 'as')を使うことができますか? これは、32ビットのチュートリアルを実行するためのもので、すべてのポインタと多数の命令をクワッドワードに変更する必要がありません。 ありがとう、 クリス。 P.S.私は簡単にCでこれを行うことができます... ``` [email protected]:~$ cat test.c #include "stdio.h" int main() { printf("hello world"); return 0; } [email protected]:~$ gcc test.c -o test64 [email protected]:~$ gcc -m32 test.c -o test32 [email protected]:~$ file test32 test32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped [email protected]:~$ file test64 test64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped ```
回答: リンカ `-m` オプションを使用してファイルをリンクする必要がある場合もあります。このオプションを使用すると、さまざまなターゲットアーキテクチャに対してエミュレーションを設定できます。 `ld --help` は、可能なエミュレーション値のリストです。 ``` ld -m elf_i386 -o file file.o file2.o ...etc ```