64位linux编译32位程序
2024-10-19 16:45:34
昨天接到的任务,编译64位和32位两个版本的.so动态库给其他部门,我的ubuntu虚拟机是64位的,编译32位时遇到了问题:
/usr/bin/ld: cannot find -lstdc++
最后在stackoverflow上看到了解决方案(安装multilib,我的源程序既有c又有cpp,所以只好gcc和g++都装了):
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
然后再 gcc -I./include *.c *.cpp -m32 -fPIC -shared -o xxxx.so -lstdc++
需要注意的是,若在程序中引用32位库,则该程序也必须编译成32位可执行文件:
g++ -o testso -m32 -fPIC test.c -L -lxxxx -ldl(根据.so情况不同,这里也可以是gcc,注意-fPIC不会出错)
因为我的test.c中调用了刚才生成的动态库 xxxx.so,所以加了-ldl
另,在CentOS下,安装g**multilib就需要不同的命令了,安装的包也跟系统版本有关,可以先运行lsb_release -a查看一下自己的版本,然后运行:
CentOS/RHEL 5.x
yum -y install glibc-devel.i386 libstdc++-devel.i386
CentOS/RHEL 6.x
yum -y install glibc-devel.i686 libstdc++-devel.i686
最新文章
- 在知乎上看到 Web Socket这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错
- java后台对前端输入的特殊字符进行转义
- [原创]cocos2dx加载网络图片&;异步加载图片
- vs2013的单元测试 第一部分
- YHLMR009 交货单查询
- rsync无密码实时增量同步
- 解决treeview未选中时,默认选中首个根节点的问题!
- php xml 互相转换
- php 删除语句
- [zz]android的logcat详细用法
- db2数据库中查找数据库表
- 排序功能实现 jQuery实现排序 上移 下移
- uva12589
- powder designer 转数据库
- Tokumx 代替 Mongodb 群集部署
- iOS纯代码工程手动快速适配
- 201521123023《Java程序设计》第9周学习总结
- 部署 Graylog 日志系统 - 每天5分钟玩转 Docker 容器技术(92)
- VB 读取列表文件名
- 使用jfreechart生成柱状图、折线图、和饼状图