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 用于静态编译。
如果拿到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 用于静态编译。
相关文章推荐
- 在64位ubuntu,使用GCC编译32位应用程序报错,解决办法
- 64位Centos运行32位ubuntu系统编译过后的C可执行文件
- premake 在64位Ubuntu系统下编译32位GCC程序
- 看你的linux编译系统是32位还是64位最简单的方法以及不同数据类型占用字节个数
- premake 在64位Ubuntu系统下编译32位GCC程序
- <摘录>如何在64位linux强制编译32位应用程序
- 64位的ubuntu14.04 LTS安装 Linux交叉编译工具链及32位“ia32-libs”依赖库
- 在Ubuntu 64位机器上执行arm-linux-gcc命令提示无法加载库,no such file or directory
- 64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解
- ubuntu16.4 64bit系统安装arm-linux-gcc 4.5.1交叉编译环境
- 64位 Linux 编译32位应用程序
- 64位 Linux 编译32位应用程序
- Ubuntu 64位系统xampp环境编译32位php扩展库
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程
- 32位系统静态编译TCMalloc到Mysql5.1.51(Linux CentOS 5.5)
- 在ubuntu 64位的机器上执行arm-linux-gcc提示 no such file or directory
- 在ubuntu 64位的机器上执行arm-linux-gcc提示 no such file or directory【转】
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 在64位Linux系统交叉编译32位软件:ffmpeg