4

いくつかの静的ライブラリをリンクするバイナリのリストがあります。これらのライブラリの束が循環依存であることが確認されました。これらのスタティック ライブラリを -Wl,--start-group と -Wl,--end-group で囲んだため、問題が発生することはありませんでした。

これが悪い習慣であることを理解したので、システムをきれいにしようとしています。

次のように、これらのライブラリが互いにどのように依存しているかを示す perl スクリプトを思いつきました。

libchld.a は libprnt.a、libgprnt.a に依存します

libprnt.a は libncle.a、libgprnt.a に依存します

そして1つになります。

ここで、各ノードが上向きまたは下向きになるようにトポロジー的に並べ替える必要があります。そして、トポロジー的にソートしているときに循環依存ライブラリのセットを見つけた場合 、システムをクリーンアップして、(ライブラリの束全体を囲むのではなく) --start-group および --end-group 内のもののみを囲む必要があります。 .

このタイプのソートを既に行う perl モジュールはありますか?

並べ替え::トポロジカル グラフ::有向グラフ

私がチェックしようとしているものです。ただし、グラフが円形の場合は処理されないようです。

4

1 に答える 1

1

これは悪い習慣であることを理解したので、私はシステムをきれいにしようとしています。

適切なレイヤリングを使用していないため、これは悪い習慣です。リンカーにとって何らかの理由で悪いからではありません。

したがって、循環依存のない適切な階層にライブラリを再配置せずにリンクラインをクリーンアップすることは、無意味な作業です。

また、ライブラリを再配置すると、適切な順序が理解しやすくなり、そのためにPerlを使用する必要がなくなります。

于 2013-03-22T03:34:46.787 に答える