CMSIS DSP静的ライブラリがリンクされた後、実行可能ファイルが大きすぎます

現象

CMSIS静的ライブラリ.aファイルをコンパイルした後、APPプログラムによって生成された実行可能ファイル780 + KBをリンクします。
フラッシュマップファイルを確認したところ、APPがDSPライブラリ内の関数を使用していることがわかりました。この関数は、一連のグローバル定数テーブルを含むDSPライブラリファイルCommmontables.cを呼び出し、コンパイル後にすべてのテーブルがリンクされます。

理由

コンパイル時に、コンパイラはデフォルトですべてのグローバル変数をリンクしますが、これは多くのスペースを占有します

解決する

ライブラリとAPPをコンパイルするときは、次のようにコンパイルオプションを追加します。

CFLAGS+= -ffunction-sections -fdata-sections
LFLAGS+=-Wl,--gc-sections

このオプションは、関数ごとに個別のセクションを作成します。リンクする場合、使用される定数テーブルのみが関数呼び出しに従ってリンクされます。コンパイル後、実行可能ファイルはわずか70 + KBです。

おすすめ

転載: blog.csdn.net/jimaofu0494/article/details/102560655