在Linux中testing外部未定义的引用

是否有一个内置的Linux实用程序,我可以用来testing一个新编译的共享库的外部未定义的引用? 海湾合作委员会似乎是足够聪明的检查我自己的二进制文件中的未定义符号,但如果符号是另一个库的引用海湾合作委员会不检查链接时间。 相反,当我尝试从另一个程序链接到我的新库时,我只会收到消息。

当我编译一个不同的项目时,在一个库中获取未定义的引用消息似乎有点愚蠢,所以我想知道当我build立库时,是否可以检查内部和外部的所有引用,而不是链接到它。

示例错误:

make -C UnitTests debug make[1]: Entering directory `~/projects/Foo/UnitTests` g++ [ tons of objects ] -L../libbar/bin -lbar -o UnitTests libbar.so: undefined reference to `DoSomethingFromAnotherLibrary` collect2: ld returned 1 exit status make[1]: *** [~/projects/Foo/UnitTests] Error 1 

链接共享对象时,通常可以使用未定义的引用,但是如果在连接的对象文件中存在未定义的符号,则可以通过向链接器提供-z defs来创建共享库(或等价地-Wl,-z,defs在调用链接器的gcc命令中定义)。