代码之家  ›  专栏  ›  技术社区  ›  Jay

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

  •  0
  • Jay  · 技术社区  · 14 年前

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

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

    4 回复  |  直到 14 年前
        1
  •  3
  •   Paul R    14 年前

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

        2
  •  2
  •   mu is too short    14 年前

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

        3
  •  1
  •   GT.    14 年前

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

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

        4
  •  0
  •   fwhacking    13 年前

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