10
在64位主机上我试图用-m32
选项来构建共享库。这些库可以与常规的64位库链接吗?GCC -m32标志:/ usr/bin/ld:跳过不兼容
我做这样的事情:
g++ -m32 -shared source.cpp -l 64_bit_library.so -o 32_bit_library.so
,并收到错误消息是这样的:
/usr/bin/ld: skipping incompatible 64_bit_library.so
所以我的问题是:如何64_bit_library.so
和32_bit_library.so
应64位主机上进行编译,以使32_bit_library.so
与64_bit_library.so
链接成为可能?
如果你真的很小心,你可以使用typedef,带有MAP_32BIT标志的mmap和共享内存段来玩一些游戏,但这是一个非常麻烦的事! – Flexo 2010-10-29 14:08:29
你能告诉我如何检查它是不兼容的吗?使用readelf也许? - http://rzr.online.fr/q/gcc – RzR 2011-10-07 12:15:01
@rzr - 最简单的检查方法就是在共享对象上使用'file'命令并查看它是否与您正在尝试的内容匹配与gcc做。例如,你可以用'readelf -h'或'objdump -x'来解决它,但是我发现'file'的输出更加简洁。 – Flexo 2011-10-07 12:20:48