64位linux编译32位应用程序,怎样设置???

sparkcoollee 2011-10-17 05:08:06
我在64位Linux上使用gcc编译32应用程序,这个应用程序依赖一个32位动态链接库,所以需要编译成32位应用程序,该系统上只有支持64位编译的gcc,但是存在32位的lib库,请问如何设置才能编译该应用程序。
命令:g++ -o test test.cpp -lmylib32
报错:libmylib32.so 不兼容
命令:g++ -m32 -o test test.cpp -lmylib32
报错:找不到-lgcc
命令:g++ -m32 -o test test.cpp -lmylib32 -L/usr/lib/gcc32
报错:/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib64/gcc/x86_64-rocky-linux-gnu/4.1.2/./crtbegin.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib64/gcc/x86_64-rocky-linux-gnu/4.1.2/./crtend.o' is incompatible with i386 output

怎样才能编译成功,尽量只是修改设置,不安装软件,因为发现安装软件总是报错。
...全文
1070 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sparkcoollee 2011-10-19
  • 打赏
  • 举报
回复
重装64位gcc之后解决问题,该版本应该支持64位和32位的编译。区别就是-m64还是-m32.
已解决,谢谢大家。
sparkcoollee 2011-10-18
  • 打赏
  • 举报
回复
各位能具体说一下吗???交叉编译需要安装什么软件吗??我这里有安装64位的gcc和存在32位的gcc的lib库,最简单的方案是什么???谢谢各位
xunxun 2011-10-18
  • 打赏
  • 举报
回复
很多发行版可以安装32位运行库的
ia32那些就是
然后你就可以用-m32编译了

如果发行版不提供,那么你只有自行交叉编译
qiuxin315 2011-10-18
  • 打赏
  • 举报
回复
mark
louyong0571 2011-10-18
  • 打赏
  • 举报
回复
楼上正解,需要安装能编译出32应用程序的交叉编译工具链
sparkcoollee 2011-10-18
  • 打赏
  • 举报
回复
这个有 没有问题,就像我上面书写的第二个程序一样,如果加上库依赖路径,就不会报找不到gcc的错误,不知道什么原因
xunxun 2011-10-18
  • 打赏
  • 举报
回复
首先确定你有32位库
即在/usr/lib32中的那些
Linux-Torvalds 2011-10-17
  • 打赏
  • 举报
回复
这个需要cross compile。

18,828

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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