原编译环境是Ubuntu 32位,生成的执行文件运行在32位系统环境下
某天把编译环境放到虚拟机中,没注意下载Ubuntu 64位的 ,
编译过程中 链接 原来 32位系统产生的lib库,报 incompatible 错误,
重新在64位系统下生成新的lib库,编译通过,但是文件在32位系统下无法执行,这才意识到可能是系统版本有问题了,利用uname -a 看了下两边的系统信息,发现了区别。
搜索网上信息怎么解决,发现利用gcc 后加 -m32就可以编译成 32位的执行程序,修改makefile文件,重新make clean & make 搞定
其中搜索用到的知识是:
ubuntu上如果要用 -m32 参数就要安装如下的库:
sudo apt-get install build-essential module-assistant
$ sudo apt-get install gcc-multilib g+±multilib