libtool .la库文件路径错误

4
我遇到了类似于这个未答复的问题的问题。我正在将我的代码提交到一个构建系统中,以使用其g++二进制文件。然而,构建被移动到一个具有随机生成名称的临时路径(例如/temp-build/1ab3fDg/...),而g++本身没有重新编译,.la文件也没有刷新(不可行)。因此,当libtool查找libstdc++.so时,它会在/temp-build/1ab3fDg/libstdc++.la文件中查找它的路径,并看到:
libdir=/temp-build/J2213bgB/.../

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

我想知道是否有一种方法可以告诉libtool忽略.la文件并在我指定的目录中查找libstdc++。或者,是否有其他可能的解决方案?我正在使用autoconf / automake生成Makefiles。


我想到的一个方法是使用sed替换正确路径的行。如果您拥有正确的权限,这将起作用。不幸的是,我没有这个权限,所以最终我编写了一个Makefile来运行短期任务。 - Lycus
1个回答

4
如果您有控制权,只需删除libstdc++.la文件。这是libtool非常麻烦的设计之一,它会在硬编码安装软件的路径中导致问题,可能会出现此类问题。
但是,.la文件的价值非常有限,并且通常与静态存档的依赖项跟踪有关,这些依赖项没有其他表达方式。但是对于libstdc++来说,无论如何都没有依赖关系,因此即使对于静态存档,.la文件也是绝对毫无用处的。
供参考,我已经写了很多关于这个主题的内容:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接