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

时间:2010-11-16 10:46:55

标签: c gcc vxworks

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

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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