使用环境

<!-- 必须 告知插件运行的环境,帮助开发者定位问题 -->

  • 操作系统版本:Window10
  • 操作系统平台(x86/x64):x64
  • VsCode 版本:1.78.2
  • EIDE 插件版本:v3.13.2023060401
  • C/C++ 插件版本:v1.16.3
  • 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):armcc6
  • 编译器版本(非编译问题可忽略):

描述问题

同个程序,EIDE 生成的可执行文件大小占用空间比 KeilMDK 生成的要大很多

屏幕截图


期望现象

希望能够帮助解决这个问题,否则我只能在EIDE中编写代码,编写完又要回到keil中才能编译烧录

    admin 你好,感谢你的答复。优化等级/相关配置都是一样的,分别烧录进入后运行也都正常,但是编译后的大小就是不一样,EIDE会大很多。

    HuangGengNan

    如果是相同的配置,不会有这么大的差异,至少 RW-Data 和 RO-Data 区应该完全一致

    检查一下 keil 上是不是针对某些文件夹 或 文件,有单独的选项设置

    最好贴一下两种工具的配置页面的截图,对比一下

      6 months later

      admin 您好,不好意思。之前的问题,后来因为项目赶Flash也足够使用就没有继续探究。现在两个文件相差非常多,将近20k。麻烦您帮忙看看我的配置是否有哪里出错,辛苦您了!







        HuangGengNan

        你打开 keil,在 Output 选项卡里勾选这个选项,

        然后再 Rebuild,然后打开keil项目的输出目录(有很多 .o 文件的目录),把这个目录压缩了发上来(里面的 .o .hex .bin .axf 比较机密的文件可以删掉

        然后用 eide 也编译一下,把 build 目录压缩一下发上来(同样的里面的 .o .hex .bin .axf 比较机密的文件可以删掉


        我对比一下编译过程

          admin

          outputdata.zip
          3MB

          您好,两个文件在这个压缩包中,感谢您这么块回复我,麻烦您了!谢谢!

            HuangGengNan

            在 eide 的 构建配置 -> c++ 附加编译器选项 中添加:

            -fno-exceptions

            选项,点保存,然后再编译试试


            比较了一下,keil 多了 -fno-exceptions 参数,应该是它默认加的

            -fno-exceptions 会禁掉 c++ try {} catch {},应该会省一些空间

              9 months later

              admin 您好。请问能否把这个参数默认添加到EIDE中呢。公司要求用的C++,每次导入工程到EIDE中,总需要单独添加这个参数

              Write a Reply...