我写的是这样的:
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来编译它.
gcc -m32
Run Code Online (Sandbox Code Playgroud)
是你想要的.正如Alan Curry在评论中提到的那样,elf_i386由gcc传递给ld(如果需要).
"跳过不兼容的库"警告只是一个警告,如果它没有提出"找不到库",那么你可以假设它链接到正确的二进制文件(因为-m32选项).