Выявление циклической зависимости между статическими библиотеками с помощью скрипта

У меня есть список двоичных файлов, которые связывают некоторые статические библиотеки. Было установлено, что множество этих библиотек циклически зависимы. Мы никогда не сталкивались с проблемами, потому что мы заключили эти статические библиотеки между -Wl,--start-group и -Wl,--end-group.

Поняв, что это плохая практика, пытаюсь почистить систему.

Я придумал perl-скрипт, который говорит мне, как эти библиотеки зависят друг от друга, например:

libchld.a зависит от libprnt.a, libgprnt.a

libprnt.a зависит от libncle.a, libgprnt.a

и идет один.

Теперь я должен отсортировать их топологически, чтобы каждый узел указывал либо вверх, либо вниз. И затем, если я найду набор циклически зависимых библиотек при топологической сортировке, мне придется заключить только те внутри --start-group и --end-group (чем заключить всю кучу библиотек ) там путем очистки системы.

Существуют ли некоторые модули Perl, которые уже выполняют этот тип сортировки?

Сортировка::Топологический граф::Направленный

те, которые я пытаюсь проверить. Но они, кажется, не справляются, если график круговой.


person venkrao    schedule 21.03.2013    source источник
comment
Вам нужны сильно связанные компоненты графа зависимостей.   -  person Sinan Ünür    schedule 21.03.2013


Ответы (1)


Поняв, что это плохая практика, пытаюсь почистить систему.

Это плохая практика, потому что вы не используете правильную многоуровневость, а не потому, что это как-то плохо для компоновщика.

Поэтому очистка линии ссылок без перераспределения библиотек в правильную иерархию без круговых зависимостей — бессмысленное занятие.

И если вы переставите библиотеки, то их правильный порядок будет легко понять, и вам не нужно будет использовать для этого Perl.

person Employed Russian    schedule 22.03.2013
comment
Задача не должна заканчиваться после передачи библиотек в правильном порядке. Исправление исходного кода — следующее действие. - person venkrao; 22.03.2013