您的位置:首页 > 运维架构 > Linux

linux(ubuntu 10.10) 64位系统 gcc编译(c)成32位(静态)可执行应用程序的方法

2011-03-16 19:33 686 查看
在ubuntu 64位系统里编写好C程序,用GCC直接编译的话是64位的可执行文件,

如果拿到linux 32位的操作系统上是不能直接运行的。

所以可以在GCC 编译时 加入-m32 参数。

例如: gcc -o test test.c -m32 就可以了。

然后用命令$file test 可以看到test 这个文件是不是32位的。 (如果是要静态编译加参数 -static即可)

但是。。。。。

通常加了-m32 参数是会报错的,如果是下面这个错误,你就幸运了:

In file included from /usr/include/features.h:387,

from /usr/include/stdio.h:28,

from read.c:1:

/usr/include/gnu/stubs.h:7: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated.

那么解决方法是:

1. 如果是UBUNTU 执行sudo apt-get install glibc-devel.i686 后即可

2. 如果是Fedora 使用yum 安装glibc-devel.i686 即可 也可以再安装一个glibc-static.x86_64 用于静态编译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: