我经常重建午夜指挥官,我已经受够了盯着 make 消息:
copying selected object files to avoid basename conflicts...
所以我决定修复它——即:使对象的名称独一无二——附加了补丁。它重命名诸如lib/util.c
和之类的东西,src/util.c
以便它们的基本名称是唯一的(lib/sub-util.c
在这种情况下,对于子例程库......)。
但是,这还不足以让消息(以及>10 秒的暂停)消失。我mc/libtool
在第 11122 行添加了以下代码段,以获取仍然冲突的对象的名称:
for obj in $oldobjs
do
func_basename "$obj"
$ECHO "$func_basename_result"
done | sort >/tmp/libtool-info.txt 2>&1
事实证明,有很多这样的文件。看起来某个内部静态库是否已链接两次。我不能超越这一点。有人可以帮忙吗?
我试过删除libmc.la
:
- src/diffviewer/Makefile.am,
- src/filemanager/Makefile.am,
- src/viewer/Makefile.am,
唯一将它(显然是过度地)添加到链接库的地方,但效果是相同的,并且libtool-info.txt列表不会改变。有趣,不是吗?
此外,似乎libmc.la
也不需要主要参考,因为更改:
mc_LDADD = \
libinternal.la \
$(top_builddir)/lib/libmc.la
至:
mc_LDADD = \
libinternal.la
不会导致任何构建或运行时错误。又搞笑了不是吗?
重复从哪里来?有人知道吗?
更新:重新访问补丁后一切正常,即:删除libmc.a
并libviewer.a
导致libdiffviewer.a
复制阶段不出现!