gcc g++ 使用哪些编译选项可以让编译出来的程序兼容32位和64位?

xp200798 2013-08-16 10:51:34
如题,当然有前提了,程序相当简单(基本上就是个helloworld),只使用了c标准库,我用static选项编译32位版本,拿到64位系统上运行会出现"/lib/ld-linux.so.2: bad ELF interpreter"的错误信息,查了一下说安装glibc.i686就可解决。但是我发现别人编译好的32位程序在我的64位系统上却运行正常,所以很想请教一下各位
...全文
1389 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xp200798 2013-08-17
  • 打赏
  • 举报
回复
引用 2 楼 songsong33 的回复:
gcc没有针对32位和64位系统的编译选项,不过lz加了static禁用程序使用动态库,目测去掉static选项就可以了。
去掉static兼容性反而不好了,各系统的动态链接库文件差异很大 我知道可以指定生成32位二进制文件或者64位二进制文件,我现在想达到的效果是一个32位程序在32位系统和64位系统上都能运行
  • 打赏
  • 举报
回复
gcc没有针对32位和64位系统的编译选项,不过lz加了static禁用程序使用动态库,目测去掉static选项就可以了。
沭水河畔 2013-08-17
  • 打赏
  • 举报
回复
楼主你应该是装了glibc.i686的。 或者别人的程序自己打包了所需的lib,我曾经这么干过
ken_scott 2013-08-17
  • 打赏
  • 举报
回复
-m32|-m64 指定编译的二进制对象的内存模型。 使用 -m32 来创建 32 位可执行文件和共享库。使用 -m64 来创建 64 位可执行文件和共享库。 http://docs.oracle.com/cd/E19205-01/821-0387/gewif/
帅得不敢出门 2013-08-17
  • 打赏
  • 举报
回复
编译成32bit程序 系统上装32bit支持库就行了。比如ub上装ia32-libs

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧