在ubuntu 8.04 x86_64系统上编译32位程序

发布: 2008-10-28 15:03

今天移植一个用c写的程序,没想到在新系统编译运行后一直出现莫名其妙的内存问题。
最后才发现是因为新服务器是64位系统的问题,原来使用的服务器是32位的。
在网上看了几篇关于从32位移植到64位的文章,知道是一些数据类型长度变化的问题,
但是一时半会也改不完,就先把程序编译成32位运行着吧。

gcc有一个参数 -m32 ,可以编译出来32位的程序。
同样ld也有一个 -m32 , 链接成32位程序。
当然这个参数是相对于 -m64来说的,意思是编译不同位数系统的可执行程序。

在编译的时候需要注意,gcc要支持 multilib。另外还要有32位的库文件。
像这个系统,有lib/ lib32/ lib64/ 几个目录,分别存储不同cpu架构
的运行库。


原文: http://qtchina.tk/?q=node/256

Powered by zexport