CMSIS DSP静态库链接后可执行文件太大

现象

在编译CMSIS静态库.a文件后,链接APP程序生成的可执行文件780+KB。
查看flash map文件后发现,APP使用了DSP库中的函数,该函数调用了DSP库文件Commontables.c,该文件包含了一系列全局常量表,编译后所有的表都被链接在内。

原因

编译时,编译器会默认链接所有全局变量,导致占用极大的空间

解决

编译该库和APP时,均添加编译选项如下:

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

该选项会为每个函数单独创建一个section,链接时会根据函数的调用只链接用到的常量表。编译后,可执行文件只有70+KB。

猜你喜欢

转载自blog.csdn.net/jimaofu0494/article/details/102560655