libtool .la库文件错误的路径

时间:2014-07-02 17:30:58

标签: c++ linker autotools libtool

我遇到类似的问题unanswered question。我将我的代码提交给构建系统以使用其g ++二进制文件。但是,构建将移动到具有随机生成的名称的临时路径(例如/temp-build/1ab3fDg/...),而g ++本身不会重新编译,并且.la不会刷新(不可行)。因此,当libtool查找libstdc ++时,它会查找/temp-build/1ab3fDg/libstdc++.la文件以获取它的路径并看到:

libdir=/temp-build/J2213bgB/.../

这是gcc最初编译的随机路径的目录。实际的.so与.la文件(/temp-build/1ab3fDg)位于同一目录中,但libtool遵循错误的libdir路径。

我想知道是否有办法告诉libtool忽略.la文件并在我指定的目录中查找libstdc ++。或者,这个问题还有其他可能的解决办法吗?我正在使用autoconf / automake来生成Makefile。

1 个答案:

答案 0 :(得分:3)

如果您可以控制它,只需删除libstdc++.la即可。遗憾的是,这是一个非常麻烦的libtool设计,用于硬编码用于安装软件的路径,并且可能会导致此类问题。

但是.la文件的价值非常有限,并且通常与静态存档的依赖关系跟踪有关,没有其他方式来表达它们。但是对于libstdc++,无论如何都没有依赖关系,因此即使对于静态存档,.la文件也绝对没用。

作为参考,我已经写了很多关于这个主题的内容: