X86_64机器编译32位程序
2014-04-28 14:42
609 查看
64位ubuntu安装兼容包后可以正常运行32位程序,现在编译自己写的程序,链接一个指定32位库,
这样程序默认编译成64位的,就会在链接32位库时失败,编译器说明该库不兼容。
这样需要想办法将程序编译成32位,查看gcc编译选项,有一个目标机选项--target-help,查看,gcc有选项-m32,可以将程序编译成32位。
这样操作让我想起来之前交叉编译的很多开源程序,是在configure时配置目标机,
应该就是在configure脚本中进行判断,从而确定编译的目标机选项,编译器实在是高深啊。
加上-m32后编译出错如下:
致命错误: bits/predefs.h:没有那个文件或目录
因为编译器默认目标机是64位,看来是缺少一些32位头文件。解决方法如下:
sudo apt-get install libc6-dev-i386
编译通过。
这样程序默认编译成64位的,就会在链接32位库时失败,编译器说明该库不兼容。
这样需要想办法将程序编译成32位,查看gcc编译选项,有一个目标机选项--target-help,查看,gcc有选项-m32,可以将程序编译成32位。
这样操作让我想起来之前交叉编译的很多开源程序,是在configure时配置目标机,
应该就是在configure脚本中进行判断,从而确定编译的目标机选项,编译器实在是高深啊。
加上-m32后编译出错如下:
致命错误: bits/predefs.h:没有那个文件或目录
因为编译器默认目标机是64位,看来是缺少一些32位头文件。解决方法如下:
sudo apt-get install libc6-dev-i386
编译通过。
相关文章推荐
- X86_64机器编译运行32位程序
- CentOS x86_64上编译32位demo程序
- centos5.8 x86_64 gcc升级到4.4.7解决了编译32位程序的问题
- X86-64 CPU架构以及64 位GCC对程序编译处理的一些变化
- Visual Studio 64位应用程序编译 (64,32位程序)
- Ubuntu 16.04使用NASM编译时用ld链接程序出现:i386 架构于输入文件 sandbox.o 与 i386:x86-64 输出不兼容(I386 architecture in the input file sandbox.o is not compatible with i386: x86-64 output)
- 在64位机器上VS2012编译的32位程序在XP系统上运行提示Wow64EnableWow64FsRedirection无法定位于输入点
- 在64位服务器上安装oracle 32位客户端只能被编译为x86的程序连接
- 在64位服务器上安装oracle 32位客户端只能被编译为x86的程序连接
- ubuntu 64上的GCC如何编译32位程序
- x86_64平台编译链接汇编程序
- ubuntu 64上的GCC如何编译32位程序
- 在64位服务器上安装oracle 32位客户端只能被编译为x86的程序连接
- C/C++日常学习总结(第十六篇)分析IA-64和IA-32位机器上同一个程序运行,前者报错,后者正常
- 在64位机器上编译32位程序
- osX下编译c++程序出现Undefined symbols for architecture x86_64的原因及解决
- linux64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32
- 编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;
- 64位机器上 编译32位程序
- 64ubuntu编译32位程序