GCC在64位系统上编译32位程序遇到的问题

默认的GCC编译选项会编译出与系统一致的输出,例如64位直接使用gcc或g++编译出的为64位程序或库,而32位系统编译的是对应32位的。
可以通过在编译时添加选项-m32-m64来指定编译生成的相应版本,如果同时带上这2个选项,只有后一个会生效。
问题的关键时多数时候会提示缺少库,这里以64位下编译32位程序为例,给出ubuntu和centos下相关依赖包。

Ubuntu下依赖包

没什么好说的,安装了这些依赖就能用了

1
2
sudo apt-get install build-essential module-assistant
sudo apt-get install gcc-multilib g++-multilib

Centos下依赖包

Centos下的包好多名字与ubuntu下都不一样,应该说rpm系与dpkg系通常不一样

1
yum install glibc-devel.i686 libstdc++-devel.i686