静的ライブラリのサイズを縮小するためのコンパイラ オプションとその他のメカニズムは何ですか?
OS : VxWorks コンパイラ : GCC 言語 : C
-Os
コード サイズを小さくするために最適化し-g
、その他のデバッグ オプションを除外するために使用します。
静的ライブラリをリンクした後に実行可能ファイルのサイズが気になる場合は、各ソース ファイル (つまりオブジェクト ファイル) に関数を 1 つだけ配置する必要があります。リンカは通常、リンク中にスタティック ライブラリからオブジェクト ファイル全体をプルします。
最終イメージに静的ライブラリを含める必要がありますか? 静的ライブラリはリンク時に実行可能ファイルにリンクされるため、動作するコンパイラ/リンカーを使用してシステムを作成しない限り、静的ライブラリを安全に削除できます。動的ライブラリは別の話です...
静的ライブラリのサイズを縮小する必要がある場合は、適切なオプションで「strip」を使用してください。オプションなしで "strip mylib.a" を実行すると正しく動作するはずですが、いくつかのオプションを追加するとライブラリが小さくなる可能性があります。リンカはその「魔法」を行うためにこのテーブルを必要とするため、ライブラリからシンボル テーブルを削除しないように注意してください。
--ffunction-sections
andを使用できます--fdata-sections
。これは、gcc に各関数とグローバル データ変数をオブジェクト内の個別のセクションに配置するように指示します。すべてのソース ファイルを変更する必要はありません。