减少静态库大小的编译器选项和其他机制是什么?
操作系统:VxWorks 编译器:GCC 语言:C
用于-Os
优化更小的代码大小,并省略-g
和任何其他调试选项。
如果您真的关心链接静态库后的可执行文件大小,那么您还应该在每个源文件(以及目标文件)中只放置一个函数。链接器通常在链接期间将整个目标文件从静态库中拉出。
您确定需要在最终图像中包含静态库吗?静态库在链接时链接到可执行文件中,因此除非您要使用工作编译器/链接器创建系统,否则您可以安全地删除静态库。动态库是另一回事......
如果您需要减小静态库的大小,请使用带有正确选项的“strip”。没有任何选项的“strip mylib.a”应该做正确的事情,但是您可能会得到一个带有一些额外选项的较小的库。请注意不要从库中删除符号表,因为链接器需要此表来执行其“魔术”。
您可以使用--ffunction-sections
and --fdata-sections
,它告诉 gcc 将每个函数和全局数据变量放在对象内的单独部分中。您不必修改所有源文件。