64位Ubuntu上编译32位程序操作步骤
1. 确认主机为64位架构的内核,应该输出为adm64,执行:
$ dpkg --print-architecture
2. 确认打开了多架构支持功能,应该输出为i386,执行:
$ dpkg --print-foreign-architectures
如果没有,则需要手动打开,依次执行:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get dist-upgrade
3. 安装gcc multilab,执行:
$ sudo apt-get install gcc-multilab g++-multilib
4. 注意:用GCC编译时需要加上 -m32 选项
5. 以下是简单的测试代码:
add.hpp:
int add(int a, int b);
add.cpp:
#include "add.hpp"int add(int a, int b)
{return (a+b);
}
main.cpp:
#include <iostream>
#include "add.hpp"int main()
{int a = 2, b = 3;int ret = 0;ret = add(a, b);std::cout<<a<<" + "<<b<<" = "<<ret<<std::endl;return 0;
}
run_x86.sh:
#! /bin/bashg++ -m32 -c -Os -fPIC add.cpp
ar -r libadd_x86.a *.o
objdump -a libadd_x86.a
g++ -m32 -o test_x86_add main.cpp -L ./ -ladd_x86
./test_x86_add
run_x64.sh:
#! /bin/bashg++ -c -Os -fPIC add.cpp
ar -r libadd_x64.a *.o
objdump -a libadd_x64.a
g++ -o test_x64_add main.cpp -L ./ -ladd_x64
./test_x64_add
执行run_x86.sh,结果如下图:
执行run_x64.sh结果如下图:
如果执行文件与库不一致,则会出错,如下图:
shell脚本中的objdump命令用来查看指定的静态库是32位还是64位的,如果是动态库,则可以用file命令。
64位Ubuntu上编译32位程序操作步骤相关推荐
- 64位Ubuntu上编译32位程序
1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...
- 在64位Ubuntu上编译32位程序常见错误
问 题1: 找不到头文件 asm/errno.h 解决办法 : [/usr/lib/gcc$ ]sudo ln -s x86_64-linux-gnu/asm asm 问题2:找不到gcc ...
- 64位Ubuntu上 安装32位QQ
64位Ubuntu上 安装32位QQ --------------------------------------------------------------------------------- ...
- 64位Linux上编译32位软件
问题:我的软件是运行在32位环境下的,原来也是在CentOS 6.3 32位上编译,运行都是没有问题的: 最近CentOS 7出来了,但是只有x86_64的,我的任务就是将我的软件移植到64位的Cen ...
- linux 64 32 编译支持,在64位linux上编译32位程序 for i386 intel
编辑中 # ld -V GNU ld version 2.15.92.0.2 20040927 Supported emulations: elf_x86_64 elf_i386 i386linux ...
- 在64位linux下编译32位程序
一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...
- 64位系统上运行32位程序的内存限制
64位系统上运行32位程序能否申请到8G内存? 收藏到手机 转发 评论 2010-01-20 10:56 申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来 ...
- 64位的GCC 编译32位程序
64位的GCC 编译32位程序 编译32的程序,只需要加上-m32就可以了 gcc -m32 llong.c 但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86 ...
- ubuntu g++编译32位应用
is incompatible with i386:x86-64 output报错 gcc编译也会出现类似问题 /usr/bin/ld: warning: i386 architecture of i ...
最新文章
- Apache 的prefork MPM和worker MPM
- windows下expdp自动备份脚本
- Javascript入门视频教程
- 微信小程序-开心大转盘(圆盘指针)代码分析
- Java设计模式之代理模式(Proxy)
- 2013年4月27日星期六
- RabbitMQ延迟消费和重复消费
- c++【深度剖析shared_ptr】
- JS高级——Proxy、Reflect
- python做图像识别该学什么_Python实现图片识别加翻译【高薪必学】
- 利用ApiPost接口管理工具校验/测试API返回结果是否符合预期
- 自然语言处理 4.语义分析
- win10jdk环境变量配置
- 【Android工具】更新手机流媒体播放器,手机DLNA播放器OPlayer
- db2检查什么表被锁住了,如何解锁
- 淘宝手淘首页金字塔流量爬升法|运营狗
- 李白打酒加强版(dp)
- Firewalld ip伪装和端口转发
- Postman + Pre-resuestScript:预请求脚本发送POST请求
- VB--. 和 ! ?
热门文章
- 1.数字图像获取:1.4图像的数据结构与特征
- 机器学习中的数学基础:(1)实际应用中矩阵特征值与特征向量的几何意义
- LabVIEW实现PCB电路板元器件匹配定位(实战篇—7)
- 黑计算机学校给的处分,学校处分通告格式
- 数据库低端sql查询语句片段
- 两种方法动态加载外部原生JS文件
- slub object 内存布局
- Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)
- Linux进程管理: 多进程编程
- 贪心:remove K digits移除K个数字