2012-07-31 37 views
4

我寫這樣的:如何將-m elf_i386傳遞給gcc?

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到l d對嗎?但我不直接使用ld,我只是使用gcc編譯它。

+1

你在鏈接命令行上是否也有-m32?這會將正確的-m傳遞給ld以及使鏈接器輸出一個32位程序所需的任何其他選項。 – 2012-07-31 21:27:20

+0

如何將-m32傳遞到鏈接命令行?我使用gcc直接生成二進制exe文件 – user1051003 2012-08-01 07:10:15

回答

6
gcc -m32 

可能是你想要的。正如Alan Curry在評論中提到的那樣,elf_i386被gcc傳遞給ld(如果需要的話)。

「跳過不兼容庫」警告只是一個警告,如果它不提供「無法找到庫」,那麼你可以假定它鏈接到正確的二進制文件(因爲-m32選項)。

相關問題