gcc链接器:使用哪些输入库?

时间:2014-01-31 19:06:35

标签: c++ gcc linker

我正在调试一些链接器问题(“未定义引用”到应该在我链接的库中的符号),我不确定编译器是否使用了正确的共享库。 / p>

我正在寻找的输出类似于ldd生成的输出,即具有完整路径的库列表......但是在生成任何输出之前,我无法使用ldd作为编译失败

我到目前为止最接近的是转储库搜索路径并逐个检查目录中的共享库;我想知道这是否是一种更好的方式呢?

2 个答案:

答案 0 :(得分:1)

  

我正在调试一些链接器问题<​​/ p>

如果您显示实际错误以及您使用的链接命令行,您将获得更多更好的答案。

你最有可能做过这样的事情:

gcc -lfoo main.c

其中libfoo.so是定义必要符号的库。阅读this以了解上述命令行错误的原因。

  

但是我不能使用ldd,因为编译在生成任何输出之前都会失败

您之前的声明称您的链接阶段失败。编译和链接不是一回事,请不要混淆。

  

我想知道这是否是一种更好的方式

要找出链接器使用的库,请阅读man ld。在UNIX系统上,此命令可能提供更好的方法:

gcc ... -Wl,-t

P.S。另请注意,没有“gcc链接器”这样的东西 - 它们是完全不同的工具。

答案 1 :(得分:0)

你可以使用gcc -v详细标记让gcc在编译和链接你的代码时吐出它正在做的每一件事。

它将显示链接器搜索它们的实际库的路径以及它用于编译代码的标记。