通过脚本识别静态库之间的循环依赖关系

时间:2013-03-21 16:28:19

标签: perl linker graph-theory circular-dependency

我有一个链接一些静态库的二进制文件列表。已经确定一堆这些库是循环依赖的。我们从未遇到过麻烦,因为我们将这些静态库包含在-Wl, - start-group和-Wl之间, - end-group

了解到这是一种不好的做法,我正在尝试清理系统。

我想出了一个perl脚本,告诉我这些库是如何相互依赖的,如下所示:

  

libchld.a依赖于libprnt.a,libgprnt.a

     

libprnt.a依赖于libncle.a,libgprnt.a

然后去了。

现在,我应该在拓扑上对这些拓扑进行排序,每个节点指向上方或下方。 然后如果我在拓扑排序时找到一组循环依赖库,我将不得不在仅那些(而不是包含整个库的一堆) )通过清理系统。

是否有一些perl模块已经进行了这种类型的排序?

  

排序::拓扑   图表::定向

是那些我想检查的人。但是,如果图表是循环的,它们似乎无法处理。

1 个答案:

答案 0 :(得分:1)

  

了解到这是一种不好的做法,我正在尝试清理系统。

这是一种不好的做法,因为你没有使用适当的分层,不是因为它对链接器有点不好。

因此,清理链接行而不将库重新安排到没有循环依赖关系的适当层次结构是没有意义的。

如果你重新安排了库,那么它们的正确顺序将很容易理解,你不需要使用Perl。

相关问题