私はさまざまなライブラリを使用してプロジェクトをビルドしてリンクするためのビルドスクリプトを使用して継承されたプロジェクト(しない)を持っています。ビルドスクリプトの出力から依存関係ツリーを解析する方法はありますか?
それは私があり、どこから来ているものと実際の静的ライブラリは、最終的な実行可能ファイルにリンクされているかを決定するために、ビルド出力を解析したいビルドを実行します。
スクリプトがコンパイルおよびGNUツールとリンクされます。この点で人生をより困難にし
私はさまざまなライブラリを使用してプロジェクトをビルドしてリンクするためのビルドスクリプトを使用して継承されたプロジェクト(しない)を持っています。ビルドスクリプトの出力から依存関係ツリーを解析する方法はありますか?
それは私があり、どこから来ているものと実際の静的ライブラリは、最終的な実行可能ファイルにリンクされているかを決定するために、ビルド出力を解析したいビルドを実行します。
スクリプトがコンパイルおよびGNUツールとリンクされます。この点で人生をより困難にし
静的ライブラリ、。ダイナミックライブラリの場合は、結果の実行可能ファイルにlddを使用し、それを使って完了することができます。最善の策は何らかの設定ファイルでしょう。あるいは、gcc/ldの-l引数を探すこともできます。それらはライブラリを指定するために使用されます。私はあなたが手動でそれを行う必要があると思うが、出力からそれを抽出するためのスクリプトを書くことができます。
例えば使用して有益な何かをすることはおそらく可能ですPerlだが、もっと詳しく説明しなければならないだろう。一方、単にスクリプトを分析する方が簡単かもしれない...
あなたはnm
ツールを使用してみてください。適切なオプションが与えられれば、バイナリ(アーカイブまたはリンクされたイメージ)を見て、どのオブジェクトがリンクされているかを伝えます。
#!/bin/sh
nm -Ag $* | sed 's/^.*\/\(.*\.a\):/\1/' | sort -k 3 | grep -v ' U '
は、未定義のシンボルのために犯人を見つけるために:
は実は、ここで私が仕事で使うワンライナーです。最後のgrep式を切り落とすだけで、あなたが望むものが得られるはずです。