gpt4 book ai didi

c++ - VxWorks 5.5.1 编译时如何减小目标文件大小?

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:17 25 4
gpt4 key购买 nike

我在生成非常大的目标文件时遇到了问题。我们正在使用 VxWorks 5.5.1,但我们有可用的 GCC 4.1.2。

我们的模块大小约为 6.2MB,我们正在寻找减少它的方法。问题似乎主要是模板使用过多引起的。使用 nm 转储文件中的符号时,我得到一个 1.8MB 的文本文件。这告诉我几乎 ⅓ 的文件只是名字。有什么办法可以减小文件大小吗?

以下方法没有奏效:

  • --strip-all 似乎没有效果 - 输出与使用 --strip-debug
  • 相同
  • 我不能使用 --gc-sections,因为该平台不支持它(该选项被忽略)

我理解VxWorks在加载时链接代码,但它要链接的只是C++运行时库,我不想在全局符号表中添加任何符号,所以应该有办法删除该信息,对吗?

作为引用,这是我的链接器版本:

i386-wrs-vxworks-ld.exe --version
>>> GNU ld (Wind River VxWorks G++ DWARF-EH 4.1-131) 2.17.50.20070509
>>> SPR fixes: cq103489 cq111170 cq116027 cq116652 cq118878 cq125145

和我的编译器版本:

i386-wrs-vxworks-g++.exe --version
>>> i386-wrs-vxworks-g++.exe (GCC) 4.1.2

最佳答案

我明白你想要从对象中去除符号的意思。但是,如果您要去除所有符号,您将没有任何符号可用作启动应用程序的入口点。但我相信你仍然有选择。不幸的是,VxWorks 5 以其 C++ 编译器效率不高而著称。

如果您将应用程序编译成 *.a(存档 - 又名静态库),您可以在构建时将其链接到您的操作系统,并从 usrAppInit.c 中调用它。这应该允许剥离符号 - 或者至少将它们移动到可选的下载符号表中。从您的应用程序构建属性中,选择宏选项卡并将您的存档添加到 LIBS 宏。

要制作存档,请转到构建属性并选择“规则”选项卡,然后从下拉框中选择存档。

要缩减操作系统的大小(链接了您的应用程序),请修改您的 vxworks 设置。尽可能多地禁用组件。另外一定要使用下载的符号表(开发工具组件->符号表组件->符号表初始化组件->选择符号表初始化->下载的符号表)。这将从操作系统中删除所有符号,并制作一个可下载的符号表,可以在启动时间下载以进行调试。

祝你好运!

附言。确保您已关闭编译器中的调试 (-g)。如果您发布编译器开关,也许我们可以提供更多帮助。

关于c++ - VxWorks 5.5.1 编译时如何减小目标文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com