链接可执行文件与可加载模块有多可移植?
链接可执行文件与可加载模块有多可移植?
我手头有一个项目,其中有一些编译为可加载模块的库,即使用了libtool的-module
标志链接的库。这些库应该包含所有必要的函数,或者它们的依赖项,也就是说,当与一个简单的main()函数链接时,它们应该生成一个完整的程序,该main()函数仅调用模块接口的所有函数供我的程序使用。
由于之前遇到了不完整且无法使用的模块问题,我编写了几个简单的检查程序,它们只包含一个main()函数,并与这些模块进行链接。当一个函数缺失时,链接器会显示相应的警告信息,所以一切都很好。然而,libtool给我一个警告:
*** 警告:将可执行文件checkplugin_locprec与可加载模块liblocprec.so进行链接是不可移植的!
我理解这个警告的目的和意图(不要将程序链接到使用-module
构建的库),但不理解它的严重程度,这就是我的问题:
这个警告有多严重?我只是幸运地在我编译的平台(i386/x86_64 Linux和MinGW)上运行正常,还是这个警告只针对一些我可以安全忽略的陌生平台?