如何将-m elf_i386传递给gcc?

use*_*003 5 gcc ld

我写的是这样的:

 gcc -m elf_i386
Run Code Online (Sandbox Code Playgroud)

它说:

gcc: error: elf_i386: No such file or directory
Run Code Online (Sandbox Code Playgroud)

基本上我试图在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
Run Code Online (Sandbox Code Playgroud)

我已经检查了用-m32构建的项目,我可以看到所有*.o文件都是ELF 32位LSB,而/usr/lib/libSDL.so也是ELF 32位LSB ...所以我可能需要将-m elf_i386传递给ld对吗?但是我不直接使用ld我只是使用gcc来编译它.

Joh*_*ann 7

gcc -m32
Run Code Online (Sandbox Code Playgroud)

是你想要的.正如Alan Curry在评论中提到的那样,elf_i386由gcc传递给ld(如果需要).

"跳过不兼容的库"警告只是一个警告,如果它没有提出"找不到库",那么你可以假设它链接到正确的二进制文件(因为-m32选项).