Build 什么是“重新链接”警告?

Build 什么是“重新链接”警告?,build,compilation,linker,libtool,Build,Compilation,Linker,Libtool,在编译mpich时,我收到了一些重新链接的警告 libtool: warning: relinking 'lib/libmpicxx.la' 我无法通过谷歌搜索错误消息来了解这些信息的含义。什么是重新链接?这是为什么产生的?我如何消除它?安装时发出“重新链接”警告,而不是编译时发出。Libtool警告您,它在安装过程中运行的命令可能很慢。重新链接可能有不同的原因 如果出现mpich,原因是完全无害的。libmpicxx库依赖于libmpi库。两者都是从同一个源构建的。Libtool确保,如果在

在编译
mpich
时,我收到了一些
重新链接的警告

libtool: warning: relinking 'lib/libmpicxx.la'
我无法通过谷歌搜索错误消息来了解这些信息的含义。什么是重新链接
?这是为什么产生的?我如何消除它?

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

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

如果不将库搜索路径(称为RPATH)硬编码到
libmpicxx
中,就无法确保(至少在Linux上)libmpicxx将使用本地构建的
libmpi

对于已安装的库,要求它们从不引用构建它们的构建树。因此,需要从已安装的
libmpicxx
库中删除RPATH。这是通过重新链接它来实现的


同样,警告不是关于您或软件包做错了什么,而是关于安装阶段可能会出现的缓慢操作(在构建阶段可能会出现缓慢操作,不需要警告)。

您试图将同一个库两次链接到一个二进制文件中。那么,它会在二进制文件中创建死代码吗?链接器会处理这个问题吗?为什么它需要完全重新链接而不是像
chrpath
这样的东西?@Ruslan,我相信原因是重新链接更普遍。只要链接起作用,它就会起作用,而系统上可能缺少chrpath。Libtool和其他GNU自动工具一样,旨在生成具有最小依赖性的非常可移植的包。它们应该写:“警告:操作可能很慢:重新链接…”