g ++未定义的符号使用共享库时出错

时间:2012-04-01 01:23:24

标签: c++ linux g++

符号位于文件中。我使用nm& amp; grep但是当我运行编译的应用程序时,我仍然得到未定义的符号错误。共享库中的其他符号工作正常。头文件将其声明为extern,并且它不在条件预处理器块中。我是c / c ++的新手,所以任何有这样经历的经验都会受到赞赏。

StackOverflow上有很多相关的问题,但是每个人都列出了对问题的实际上下文没有任何意义的源文件和标题。这是一个通用的编程问题:为什么g ++不能将符号链接到我编译的应用程序中?标头定义检查正常,符号位于共享库中,其他符号正常工作。

1 个答案:

答案 0 :(得分:0)

您需要设置LD_LIBRARY_PATH环境变量以包含库开发版本的路径。这将确保运行时链接器(ld.so)在您运行应用程序时找到它。

您的构建设置很好,但它们不会影响运行时发生的情况。如果你真的想要,有很多方法可以在构建时“烘焙”可执行文件。请参阅ld.so的手册页以了解它如何搜索库。