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