【问题标题】:What is `relinking` warning?什么是“重新链接”警告?
【发布时间】:2015-06-21 23:10:10
【问题描述】:

在编译 mpich 时,我收到了一些 relinking 警告...

libtool: warning: relinking 'lib/libmpicxx.la'

我无法通过谷歌搜索错误消息来找出这些含义。 relinking 是什么?为什么会导致它,我该如何摆脱它?

【问题讨论】:

  • 您试图将同一个库两次链接到一个二进制文件中。
  • 那么,它会在二进制文件中创建死代码吗?链接器会处理这个问题吗?

标签: build compilation linker libtool


【解决方案1】:

“重新链接”警告是在安装时发出的,而不是在编译时发出的。 Libtool 会警告您在安装期间它正在运行一个可能很慢的命令。重新链接可能有不同的原因。

如果是mpich,原因是完全无害的。 libmpicxx 库依赖于 libmpi 库。两者都是从同一来源构建的。 Libtool 确保如果您在构建目录中运行任何可执行文件,它将使用构建目录中的库而不是安装的库。

没有办法确保(至少在 Linux 上)libmpicxx 将使用本地构建的 libmpi 库而不将库搜索路径(所谓的 RPATH)硬编码到 libmpicxx

对于已安装的库,要求是它们永远不会引用它们所在的构建树。所以需要从已安装的libmpicxx 库中删除 RPATH。这是通过重新链接来完成的。

再一次,警告不是关于您或软件包做错了什么,而是关于安装阶段可能缓慢的操作(构建阶段的缓慢操作是预期的,不需要警告)。

【讨论】:

  • 为什么它需要完全重新链接而不是像 chrpath 这样的东西?
  • @Ruslan,我相信原因是重新链接更加普遍。只要链接有效,它就可以工作,而系统上可能缺少 chrpath。 Libtool 与其他 GNU 自动工具一样,旨在生成具有最小依赖性的非常便携的包。
  • 他们应该写:“警告:可能运行缓慢:重新链接....”
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 2014-12-04
  • 2021-11-25
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
相关资源
最近更新 更多