2

我经常重建午夜指挥官,我已经受够了盯着 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.alibviewer.a导致libdiffviewer.a复制阶段不出现!

4

0 回答 0