64位Ubuntu上编译32位程序操作步骤
2016-03-18 16:10
465 查看
1. 确认主机为64位架构的内核,应该输出为adm64,执行:
5. 以下是简单的测试代码:
add.hpp:
run_x86.sh:
run_x64.sh:
执行run_x86.sh,结果如下图:
执行run_x64.sh结果如下图:
如果执行文件与库不一致,则会出错,如下图:
shell脚本中的objdump命令用来查看指定的静态库是32位还是64位的,如果是动态库,则可以用file命令。
$ dpkg --print-architecture2. 确认打开了多架构支持功能,应该输出为i386,执行:
$ dpkg --print-foreign-architectures如果没有,则需要手动打开,依次执行:
$ sudo dpkg --add-architecture i386 $ sudo apt-get update $ sudo apt-get dist-upgrade3. 安装gcc multilab,执行:
$ sudo apt-get install gcc-multilab g++-multilib4. 注意:用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/bash g++ -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/bash g++ -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命令。
相关文章推荐
- 94. Binary Tree Inorder Traversal――递归,栈
- jpa
- 64位Ubuntu上编译32位程序操作步骤
- 堆排序的实现
- 解决访问不了 google 官网developer.android.com的问题
- oracle 默认是升序还是降序
- codeforces B. Processing Queries【模拟】
- Gradle sync failed: Unable to start the daemon process
- 海盗比酒量
- spring事物回滚之AOP
- 排序整理
- Django~Models2
- java对象与json对象间的相互转换
- javascript移动开发中touch触摸事件详解
- 深入学习微框架:Spring Boot
- 网易2016研发工程师编程题
- Servlet生命周期
- Android开源项目分类汇总
- [疯狂Java]多线程:线程通信(监控器信号、Condition信号、阻塞队列)
- 试用cmd markdown