【问题标题】:how to pass -m elf_i386 to gcc?如何将 -m elf_i386 传递给 gcc?
【发布时间】:2012-07-29 17:49:15
【问题描述】:

我是这样写的:

 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编译它。

【问题讨论】:

  • 你在链接命令行上也有 -m32 吗?这会将正确的 -m 以及使链接器输出 32 位程序所需的任何其他选项传递给 ld。
  • 如何将 -m32 传递给链接命令行?我用gcc直接生成二进制exe

标签: gcc ld


【解决方案1】:
gcc -m32

可能是你想要的。 elf_i386 由 gcc 传递给 ld(如果需要),正如 Alan Curry 在 cmets 中提到的那样。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2021-02-15
    相关资源
    最近更新 更多