1

Cプログラムに多数のインクルードがあります。開発中、私はさまざまな方法を試したので、私が含めたが使用されていないライブラリがたくさんあるに違いありません。

コンパイラは使用されていないライブラリを削除しますか?教えてくれるツールはありますか?コンパイラがコードを削除したとしても、私がいくつかのことを削除できれば、ソースを整理するでしょう。

4

3 に答える 3

2

最終的に実行可能ファイルに何が入るかを決定するのは実際にはコンパイラではなく、リンカーです。最新のリンカーは、コードが使用されない限り、ライブラリからコードを取り込まないほどスマートです。したがって、何百ものライブラリにリンクできますが、それらの関数を呼び出さないと、プログラムにコードが追加されません。

ヘッダー ファイルに関しては、ほとんどの場合、宣言とプリプロセッサ マクロ以外は何も含まれておらず、それら自体でコードを追加することはありません。多くのヘッダー ファイルをインクルードすることの最大の欠点は、ソース ファイルのコンパイルが遅くなることです。

于 2012-07-31T15:21:34.587 に答える
1

いいえ、ツールセットは、リンクするように指示したライブラリにリンクします。Doxygenなどのツールを使用してソースコードを実行すると、コードの使用方法に関するドキュメントとグラフのページが生成されますが、必ずしもそうとは限りません。ライブラリを適切に使用しているか、効率的に使用しているかを教えてください。

ライブラリが必要かどうかを判断し、プログラムを実行するために必要なライブラリを慎重に選択するのは、プログラマーの責任です。不要なインクルードはコンパイル時間を短縮し、バイナリを肥大化させる可能性があります。

于 2012-07-31T15:17:22.373 に答える
0

を見つけるのに役立つかもしれない Linux ユーティリティ

a)オブジェクトコード/ライブラリに含まれるシンボル(関数など)

b) 共有ライブラリの依存関係は、それぞれnmツールとlddツールです。

詳細については、以下のリンクが非常に役立ちます。

http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

于 2012-07-31T15:50:20.207 に答える