2013-03-21 4 views
4

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

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

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

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

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

и идет один.

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

Есть ли некоторые модули perl, которые уже выполняют этот тип сортировки?

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

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

+0

Вам понадобится [сильно подключенные компоненты] (http://search.cpan.org/perldoc/Graph#strongly_connected_components) графа зависимости. –

ответ

1

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

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

Таким образом, очистка линии ссылок без переустановки библиотек в правильную иерархию без круговых зависимостей - это бессмысленное упражнение.

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

+1

Задача не должна заканчиваться после прохождения библиотек в правильном порядке. Исправление исходного кода - это следующее действие. – venkrao

Смежные вопросы