在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 用于静态编译。
在Ubuntu 10.10 64位系统中,编译C程序生成32位可执行文件需要在GCC命令中添加'-m32'参数。为确保在32位系统上运行,可以进一步添加'-static'进行静态编译。然而,这可能会导致因缺失头文件而报错,如'gnu/stubs-32.h'。解决此问题的方法是在Ubuntu上运行'sudo apt-get install glibc-devel.i686',或者在Fedora上使用'yum'安装相应包。
 64位系统 gcc编译(c)成32位静态可执行应用程序的方法&spm=1001.2101.3001.5002&articleId=6254478&d=1&t=3&u=ff68e7bd766d4d99802bf4a66d05de80)
1212

被折叠的 条评论
为什么被折叠?



