把原来32位机器上的程序,原封不动地搬到64位机上,竟然不可以。以前从来没有注意32位机与64位机有什么区别。
我现在的情况是这样的,使用的静态类库都是在32机上编译的。比如 libtestlib.a。 现在进行编译时就出现问题了。
在网上查了一下,说编译的时候要加上 -m32, -m32是说,编译环境是32位机的环境。g++中对-m32(-m64)的解释是:
-m32
-m64
Generate code for a 32-bit or 64-bit environment. The 32-bit envi-
ronment sets int, long and pointer to 32 bits. The 64-bit environ-
ment sets int to 32 bits and long and pointer to 64 bits.
所以在编译的时候,我们要把编译中加上-m32选项
g++ -m32 -o test test.cpp -L. -ltestlib
如果我编译文件时,使用了一个.o文件,那么这个.o文件也需要使用-m32,如
test:test.cpp obj.o