可执行文件与可加载模块之间的可移植性如何?

时间:2011-10-01 10:18:01

标签: c linker dynamic-linking libtool

我手上有一个项目,其中一些库被编译为可加载模块,即与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 个答案:

答案 0 :(得分:2)

主要平台是不起作用的是Mac OS X.在其他平台上,它通常应该可以工作,但可能会失败,具体取决于您使用的其他构建选项。如果您使用了libtool,那么您在其他平台上可能是安全的。