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