64位 Linux 编译32位应用程序

[size=large][b][color=blue]1. Redhat 系 Linux[/color][/b][/size]

[b]以 Scientific Linux 6.2 为例:[/b]
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" 这两个组件有没有安装:
$ yum grouplist "Development tools" "Compatibility libraries"

没装则装上:
$ yum groupinstall "Development tools"
$ yum groupinstall "Compatibility libraries"

另外还需要安装 glibc-devel 的32位版
$ yum install glibc-devel.i686

下面写段代码测试下:
/* test.c */
#include <stdio.h>
int main()
{
printf("sizeof long is %d\n", sizeof(long));
return 0;
}

64位编译执行结果:
$ gcc test.c
$ file a.out
a.out: ELF 64-bit LSB executable ...
$ ./a.out
sizeof long is 8

32位编译执行结果 (在64位系统编译32位程序需要给 GCC 加 -m32 参数):
$ gcc -m32 test.c
$ file a.out
a.out: ELF 32-bit LSB executable ...
$ ./a.out
sizeof long is 4


[size=large][b][color=blue]2. Debian 系 Linux[/color][/b][/size]

[b]以 ubuntu 12.04 为例:[/b]

uname -p 结果:x86-64, 确认是64位环境。
ubuntu 中需要安装以下包:
$ apt-get install build-essential module-assistant
$ apt-get install gcc-multilib g++-multilib

测试过程同上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值