64位 Linux 编译32位应用程序
2015-04-08 11:41
288 查看
1. Redhat 系 Linux
以 Scientific Linux 6.2 为例:
Scientific Linux 与 Centos 都是 Redhat Linux 的民间再发行版。因为它们既有Redhat的稳定,又可以及时免费更新Bugfix,所以比较流行。其中Scientific Linux由费米实验室维护,公司内的编译服务器都安装此版本。
uname -r 结果是:2.6.32-220.17.1.e16.x86_64, 确认是64位环境。
先检查编译环境是否完备。确认下"Development tools", "Compatibility libraries" 这两个组件有没有安装:
Shell代码
$ yum grouplist "Development tools" "Compatibility libraries"
没装则装上:
Shell代码
$ yum groupinstall "Development tools"
$ yum groupinstall "Compatibility libraries"
另外还需要安装 glibc-devel 的32位版
Shell代码
$ yum install glibc-devel.i686
下面写段代码测试下:
C代码
/* test.c */
#include <stdio.h>
int main()
{
printf("sizeof long is %d\n", sizeof(long));
return 0;
}
64位编译执行结果:
Shell代码
$ gcc test.c
$ file a.out
a.out: ELF 64-bit LSB executable ...
$ ./a.out
sizeof long is 8
32位编译执行结果 (在64位系统编译32位程序需要给 GCC 加 -m32 参数):
Shell代码
$ gcc -m32 test.c
$ file a.out
a.out: ELF 32-bit LSB executable ...
$ ./a.out
sizeof long is 4
2. Debian 系 Linux
以 ubuntu 12.04 为例:
uname -p 结果:x86-64, 确认是64位环境。
ubuntu 中需要安装以下包:
Shell代码
$ apt-get install build-essential module-assistant
$ apt-get install gcc-multilib g++-multilib
测试过程同上。
以 Scientific Linux 6.2 为例:
Scientific Linux 与 Centos 都是 Redhat Linux 的民间再发行版。因为它们既有Redhat的稳定,又可以及时免费更新Bugfix,所以比较流行。其中Scientific Linux由费米实验室维护,公司内的编译服务器都安装此版本。
uname -r 结果是:2.6.32-220.17.1.e16.x86_64, 确认是64位环境。
先检查编译环境是否完备。确认下"Development tools", "Compatibility libraries" 这两个组件有没有安装:
Shell代码
$ yum grouplist "Development tools" "Compatibility libraries"
没装则装上:
Shell代码
$ yum groupinstall "Development tools"
$ yum groupinstall "Compatibility libraries"
另外还需要安装 glibc-devel 的32位版
Shell代码
$ yum install glibc-devel.i686
下面写段代码测试下:
C代码
/* test.c */
#include <stdio.h>
int main()
{
printf("sizeof long is %d\n", sizeof(long));
return 0;
}
64位编译执行结果:
Shell代码
$ gcc test.c
$ file a.out
a.out: ELF 64-bit LSB executable ...
$ ./a.out
sizeof long is 8
32位编译执行结果 (在64位系统编译32位程序需要给 GCC 加 -m32 参数):
Shell代码
$ gcc -m32 test.c
$ file a.out
a.out: ELF 32-bit LSB executable ...
$ ./a.out
sizeof long is 4
2. Debian 系 Linux
以 ubuntu 12.04 为例:
uname -p 结果:x86-64, 确认是64位环境。
ubuntu 中需要安装以下包:
Shell代码
$ apt-get install build-essential module-assistant
$ apt-get install gcc-multilib g++-multilib
测试过程同上。
相关文章推荐
- 64位 Linux 编译32位应用程序
- 如何在64位linux强制编译32位应用程序
- <摘录>如何在64位linux强制编译32位应用程序
- linux(ubuntu 10.10) 64位系统 gcc编译(c)成32位(静态)可执行应用程序的方法
- 64位 Linux 编译32位应用程序
- 32位linux操作系统上编译 64位应用程序
- 如何在64位的Linux中运行32位的应用程序 .
- 如何在64位Linux上编译安装32位wine。
- Linux 应用程序32位 到 64位
- 64位的linux装的hadoop是32位的,需要手工编译
- 如何在64位版本Linux上开发运行32位应用程序
- win7 64位编译32位应用程序和64位应用程序
- linux gcc 区分32位或64位编译
- 64位Linux 编译32位程序
- 64位Linux上编译32位软件
- 在64位linux上编译32位程序
- Visual Studio 64位应用程序编译 (64,32位程序)
- 32位的fortran函数库在64位Linux下编译及使用的方法
- 如何在64位的Linux中运行32位的应用程序
- Linux 应用程序32位 到 64位