2011-10-01 40 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,那么你在其他平台上可能是安全的。