【问题标题】:libtool .la library file wrong pathlibtool .la 库文件路径错误
【发布时间】:2014-07-02 17:30:57
【问题描述】:

我遇到了与 unanswered question 类似的问题。我将我的代码提交给构建系统以使用其 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 生成 Makefile。

【问题讨论】:

  • 我想到的一件事是使用 sed 将行替换为正确的路径。如果您具有正确的权限,这将起作用。不幸的是,我没有,所以我最终为短期编写了一个 Makefile。

标签: c++ linker autotools libtool


【解决方案1】:

如果您可以控制它,只需删除libstdc++.la。不幸的是,libtool 的这种设计很麻烦,硬编码你用来安装软件的路径,它可能会导致诸如此类的问题。

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

作为参考,我写了很多关于这个主题的文章:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2015-06-21
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多