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

thi*_*ton 5 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!
Run Code Online (Sandbox Code Playgroud)

我理解这个警告的目的和意图(不要将程序与构建的库链接-module),但不是它的严重性,这是我的问题:

这警告有多严重?我很幸运,这可以在我正在编译的平台上运行(i386/x86_64 Linux和MinGW),或者这个警告是否与我可以放心忽略的一些模糊的自然平台相关?

Pet*_*aut 2

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