2

未使用のモジュールを出力ファイルに含めないように gcc/ld に指示できるかどうか知りたいです。

モジュールa.cb.cおよびがあるとしc.cます。a.cb.c相互に依存しており、そのうちの 1 つに が含まれておりmain()、何らかの理由で のどの部分c.cも参照されていません。

gcc -c a.c
gcc -c b.c
gcc -c c.c

ライブラリにまとめてバンドルするc.cと、出力に含まれないコードはありません。

ar rcs abc.a a.o b.o c.o
gcc abc.a

しかし、.oファイルを gcc に直接渡すと、 c.cresp. c.o含まれています。

gcc a.o b.o c.o

どうにかして、ライブラリに入れずに未使用のモジュールを除外するよう gcc に指示できますか?

私は AVR µC をプログラミングしており、ライブラリの作成を許可しない AVR Studio を使用していますが、ビルド構成によっては使用されていないソース ファイルを省略したいと考えています。

4

1 に答える 1

3

AVRで可能かどうかはわかりませんが、-ffunction-sections -fdata-sectionsコンパイル時に使用して、GCCに各シンボルを独自のセクションに配置するように依頼できます。次に、リンクのステップで、未使用のセクションを削除する-Wl,--gc-sectionsように依頼できます。ld

于 2012-02-24T14:46:02.687 に答える