2011-10-01 37 views
5

我的手上有一個項目,其中一些庫被編譯爲可加載模塊,即與libtool的-module標誌鏈接。這些庫應該包含所有必需的函數或者它們的依賴關係,也就是說,當它們與一個簡單的main()函數鏈接時,它們應該產生一個完整的程序,該函數只需調用我的程序的模塊接口的所有函數。可移植性如何將可執行文件鏈接到可加載模塊?

由於我之前遇到過不完整且因此不可用的模塊問題,因此我有幾個簡單的檢查程序,它們只包含main(),並且與模塊鏈接。當一個功能缺失時,鏈接器會發出適當的警告聲,所以一切都很好。然而,libtool的給了我一個警告:

*** Warning: Linking the executable checkplugin_locprec against the loadable module 
*** liblocprec.so is not portable! 

我明白此警告的目的和意圖(不針對與-module建立了一個鏈接庫程序),但不是它的嚴重程度,這是我的問題:

這個警告有多嚴重?我真的很幸運,它可以在我編譯的平臺(i386/x86_64 Linux和MinGW)上運行,或者這個警告與我可以安全忽略的一些不起眼的後臺平臺相關嗎?

+1

幸運的是你。它在Mac OS X上不起作用。 [這裏](http://stackoverflow.com/questions/2339679/what-are-the-differences-between-so-and-dylib-on-osx)。 –

+0

@ n.m。感謝那一點(也是一個很好的答案)。那麼,如果Mac OS X是我唯一的問題,我真的很放心。 – thiton

回答

2

主要的平臺是Mac OS X無法正常工作。在其他平臺上,它通常應該可以工作,但可能會失敗,具體取決於您使用的其他構建選項。如果你使用libtool,那麼你在其他平臺上可能是安全的。