libtool: link: 警告: .../libstdc++.la 似乎被移动了

libtool: link: warning: .../libstdc++.la seems to be moved

我收到了很多这种形式的警告(为了便于阅读而添加了换行符):

libtool: link: warning: `/usr/local/gcc-5.2.0/lib/gcc/x86_64-unknown-linux-gnu/
    5.2.0/../../../../lib64/libstdc++.la' seems to be moved

并且无法弄清楚为什么或警告是否相关。请注意,两条路径都解析到同一位置。

事实证明,gcc-5.2.0 的自定义安装使用以下 libdir 行安装了 libstdc++.la:

libdir='/usr/local/gcc-5.2.0/lib/../lib64'

但是当 libtool 链接到 libstdc++.la 时,它使用警告中报告的路径(它也恰好是 g++ --print-search-dirs 输出的一部分——这可能是相关的)。

修复方法是将 libstdc++.la 中的 libdir 值更改为 libtool 在其中搜索 libstdc++.la 的确切路径:

libdir='/usr/local/gcc-5.2.0/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64'

显然,libtool 不会规范化或规范化路径并将它们作为字符串进行比较,因此会出现错误。另见 a related thread on the libtool mailing list from 2006