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

标签 perl linker graph-theory circular-dependency

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

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

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

libchld.a depends on libprnt.a, libgprnt.a

libprnt.a depends on libncle.a, libgprnt.a



去一个。

现在,我应该对这些进行拓扑排序,每个节点要么指向上方,要么指向下方。
然后如果我在拓扑排序时发现一组循环依赖库,我将不得不附上 只有那些 通过清理系统,在 --start-group 和 --end-group 中(而不是封闭整个库)。

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

Sort::Topological Graph::Directed



是我要检查的那些。但是,如果图形是圆形的,它们似乎无法处理。

最佳答案

Having understood that this is a bad practice, I'm trying to clean the system.



这是一种不好的做法,因为您没有使用正确的分层,而不是因为它对链接器不利。

因此,清理链接线而不将库重新排列为没有循环依赖的适当层次结构是毫无意义的练习。

而且,如果您确实重新排列了库,那么它们的正确顺序将很容易理解,并且您不需要为此使用 Perl。

关于perl - 通过脚本识别静态库之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553006/

相关文章:

Perl Tkx 示例或教程

c++ - 我如何强制 Windows.h 在 Visual Studio 中静态链接而不是动态链接?

visual-studio - .exe给出错误Win7x64缺少MSVCP120.dll

java - 最短路径算法 : Uniform distances from one point to adjacent points

java - 使用 Java 中的 Floyd Warshall 算法保存图中的最短路径

perl - 如何下载雅虎网上论坛?

perl - Time::Piece (localtime/gmtime) 计算与 bash 日期

perl - 当我使用 Perl::Magick's Extent with Gravity 时,为什么我的图像不在中心?

c - 为什么链接程序需要 stdlib?

matlab - 如何在Matlab中绘制网络?