C++ 根据可执行文件链接共享库的GCC
我有以下问题。我有一个共享库,它只是一组链接在一起的翻译单元,所以当我编译这个共享库时,我不会得到任何链接器错误(未定义的引用,即使我可能有) 共享库从一个可执行文件动态加载,该可执行文件还包含共享库正在使用的导出(库中使用的引用在运行时解析) 主要的问题是我需要未定义的引用警告,这样我就可以静态地修复它们,而不是等待应用程序崩溃 我在某个地方读到,我可以将“-Wl,-no undefined”传递给gcc,这样我就可以把这些错误取回来,它确实有效,但它也给了我所有可执行文件导出的未定义引用。我只想将这些警告过滤到翻译单元的范围内C++ 根据可执行文件链接共享库的GCC,c++,c,gcc,linker,linker-errors,C++,C,Gcc,Linker,Linker Errors,我有以下问题。我有一个共享库,它只是一组链接在一起的翻译单元,所以当我编译这个共享库时,我不会得到任何链接器错误(未定义的引用,即使我可能有) 共享库从一个可执行文件动态加载,该可执行文件还包含共享库正在使用的导出(库中使用的引用在运行时解析) 主要的问题是我需要未定义的引用警告,这样我就可以静态地修复它们,而不是等待应用程序崩溃 我在某个地方读到,我可以将“-Wl,-no undefined”传递给gcc,这样我就可以把这些错误取回来,它确实有效,但它也给了我所有可执行文件导出的未定义引用。我
这可能吗?如果没有,如何定义对具有共享库导出的可执行文件的引用。您可以尝试将库和主程序链接到
-Wl,-z,现在。这将使运行时ldso立即解析所有引用,如果未找到任何引用,则抛出错误
否则,我不会在链接器手册中看到这样一个选项:“允许这个ELF满足符号,但实际上不要将它列为所需的DT_”
您可以尝试使用-Wl,--no-undefined
并用脚本解析输出,这样您就可以过滤掉您知道主程序会满足的符号
另一种选择可能是标记主程序提供的所有符号,然后仍然使用-Wl,--no-undefined
。弱符号不会被报告为错误。通常,未解析的引用会导致链接失败。这不清楚你到底在做什么。请在你的问题中加入一个答案。