我有一个链接一些静态库的二进制文件列表。已确定这些库中有许多是循环依赖的。我们从来没有遇到过麻烦,因为我们将这些静态库包含在 -Wl,--start-group 和 -Wl,--end-group 之间
了解这是一种不好的做法后,我正在尝试清理系统。
我想出了一个 perl 脚本,它告诉我这些库是如何相互依赖的,如下所示:
libchld.a 依赖于 libprnt.a、libgprnt.a
libprnt.a 依赖于 libncle.a、libgprnt.a
去一个。
现在,我应该对这些进行拓扑排序,每个节点要么指向上方,要么指向下方。然后如果我在拓扑排序时找到一组循环依赖库,我将不得不通过清理系统只将那些 包含在 --start-group 和 --end-group 中(而不是包含整个库) .
是否已经有一些 perl 模块可以进行这种类型的排序?
排序::拓扑图::有向
是我要检查的那些。但是,如果图形是圆形的,它们似乎无法处理。