0

减少静态库大小的编译器选项和其他机制是什么?

操作系统:VxWorks 编译器:GCC 语言:C

4

4 回答 4

3

用于-Os优化更小的代码大小,并省略-g和任何其他调试选项。

于 2010-11-16T10:51:14.887 回答
2

如果您真的关心链接静态库后的可执行文件大小,那么您还应该在每个源文件(以及目标文件)中只放置一个函数。链接器通常在链接期间将整个目标文件从静态库中拉出。

于 2010-11-16T20:41:12.280 回答
1

您确定需要在最终图像中包含静态库吗?静态库在链接时链接到可执行文件中,因此除非您要使用工作编译器/链接器创建系统,否则您可以安全地删除静态库。动态库是另一回事......

如果您需要减小静态库的大小,请使用带有正确选项的“strip”。没有任何选项的“strip mylib.a”应该做正确的事情,但是您可能会得到一个带有一些额外选项的较小的库。请注意不要从库中删除符号表,因为链接器需要此表来执行其“魔术”。

于 2010-11-16T17:48:12.943 回答
0

您可以使用--ffunction-sectionsand --fdata-sections,它告诉 gcc 将每个函数和全局数据变量放在对象内的单独部分中。您不必修改所有源文件。

于 2011-11-03T17:17:41.913 回答