私は.a
のファイルを持っています。そのファイルの生成プロセスは私によって制御されておらず、そのソースもありません。リンクに使用すると、libA.a
は、libA.a
に定義されていないシンボルがある場合はlibB.a
に依存しますが、libB.a
に定義されています。ld
/gcc
コマンドラインに正しい順序で入れることができます。2つのLinux静的ライブラリがある場合、どのライブラリが他の静的ライブラリに依存しているかを確認する方法は?
これらの依存関係をBUILD
ファイルbazelに保存したいので、リンク(つまりそれらのライブラリを2回指定する)をしたくないので、正確な依存関係を知りたいと思います。いくつかのコマンドラインツールがある場合、私は疑問に思う
は、libA.a
とlibB.a
与え、libA.a
はlibB.a
に依存するかどうかを伝えることができますか?そのようなスクリプトがない場合は、どうすればそのようなスクリプトを書くことができますか?
注:私の定義はで、依存度はで100%正確ではない場合があります。定義済み/未定義のシンボル以外の他の種類の依存関係があるかどうかを教えてください。
最も簡単な方法は、nm libA.a
とnm libB.a
の出力を処理し、U
シンボルを探すことですが、man nm
に記載されている記号には多くの種類があり、それらのそれぞれが異なるセマンティックを持っているので、私は、私ならば、私はいくつかを逃す可能性が心配ですそのような単純化されたアプローチを使用する
静的ライブラリが決定的に他のlibに依存しません。 –
@IporSircerでは、 '.so'ファイルのようなファイル形式にエンコードされた依存関係はありませんが、依存関係はあります。 'libA.a'が' libB.a'に依存している場合、 'ld'の中でコマンドライン' libA.a'が 'libB.a'の前に置かれなければなりません。 –