6

私はこのように書きました:

 gcc -m elf_i386

それは言います:

gcc: error: elf_i386: No such file or directory

基本的に、64ビットシステムで32ビットプログラムをコンパイルしようとしていますが、エラー:

/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: 
skipping incompatible /usr/lib/libSDL.so when searching for -lSDL

-m32 でビルドされたプロジェクトを確認したところ、すべての *.o ファイルが ELF 32 ビット LSB であり、/usr/lib/libSDL.so も ELF 32 ビット LSB であることがわかります...だから私は-m elf_i386 を ld に渡す必要があるかもしれません。しかし、私はldを直接使用せず、gccを使用してコンパイルします。

4

1 に答える 1

9
gcc -m32

おそらくあなたが望むものです。Alan Curry がコメントで述べたように、elf_i386 は gcc によって ld (必要な場合) に渡されます。

「互換性のないライブラリをスキップしています」という警告は単なる警告であり、「ライブラリが見つかりません」というメッセージが表示されない場合は、正しいバイナリにリンクされていると見なすことができます (-m32 オプションのため)。

于 2012-08-01T15:50:47.430 に答える