跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. 开发环境搭建
  4. YCT Config Tool 生成的 CMake 脚本覆盖了默认优化选项,导致代码裁剪失效

YCT Config Tool 生成的 CMake 脚本覆盖了默认优化选项,导致代码裁剪失效

已定时 已固定 已锁定 已移动 已解决 开发环境搭建
9 帖子 3 发布者 2.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • jin_yiJ 离线
    jin_yiJ 离线
    jin_yi
    写于 最后由 编辑
    #1

    如下图所示,工具界面中默认开启了 -ffunction-sections 和 -fdata-sections。

    • 原因: 生成的 cmake/gcc.cmake 脚本中使用 SET(CMAKE_C_FLAGS ...) 强制重置了编译参数,导致工具传入的这些标志被覆盖丢失。

    • 后果: 链接器无法正确剔除未使用的代码(Dead Code Elimination)

    • 关联问题:
      https://forum.ytmicro.com/topic/1302/同样的工程vscode-gcc编译的二进制文件远远大于keil-mdk生成的?_=1763805564704

    65761351-0095-445c-b8bd-577719c47dfd-image.png

    c0a0e3cc-1b9e-4e8c-a7eb-9c0610679f16-image.png

    1 条回复 最后回复
    0
    • jin_yiJ jin_yi 在 中 引用了 这个主题
    • FrankieF 离线
      FrankieF 离线
      Frankie YunTu
      写于 最后由 Frankie 编辑
      #3

      可以先用上面的方式解决,我们这边测试,这两个编译选项是加进去的,如下:
      c7b3f391-7994-4131-9b57-4fe92045359f-image.png

      1 条回复 最后回复
      0
      • jin_yiJ 离线
        jin_yiJ 离线
        jin_yi
        写于 最后由 编辑
        #2

        gcc.cmake会覆盖yct上位机的编译优化指令的问题,请问后续有更新计划嘛
        现在使用的是如下方法,
        在{project_DIR}/CMakeList.txt中

        
        # USER CODE BEGIN start
        add_compile_options(-ffunction-sections -fdata-sections)
        # USER CODE END start
        
        
        # USER CODE BEGIN target_link_libraries
        target_link_options(${project_elf} PRIVATE -Wl,--gc-sections)
        # USER CODE END target_link_libraries
        

        是否为云图官方推荐的方式?

        1 条回复 最后回复
        0
        • FrankieF 离线
          FrankieF 离线
          Frankie YunTu
          写于 最后由 Frankie 编辑
          #3

          可以先用上面的方式解决,我们这边测试,这两个编译选项是加进去的,如下:
          c7b3f391-7994-4131-9b57-4fe92045359f-image.png

          1 条回复 最后回复
          0
          • John_LinqJ 离线
            John_LinqJ 离线
            John_Linq
            写于 最后由 编辑
            #4

            e24f61d3c11c7dc18b7f8417699ce03.png

            John_LinqJ 1 条回复 最后回复
            0
            • John_LinqJ 离线
              John_LinqJ 离线
              John_Linq
              在 回复了 John_Linq 最后由 编辑
              #5

              John_Linq Debug/Release/MinSizeRel,不管选哪个,都是生成胖胖的hex

              1 条回复 最后回复
              0
              • John_LinqJ 离线
                John_LinqJ 离线
                John_Linq
                写于 最后由 编辑
                #6

                741fc0861928e7a157049d4b0015791.png

                1 条回复 最后回复
                0
                • John_LinqJ 离线
                  John_LinqJ 离线
                  John_Linq
                  写于 最后由 编辑
                  #7

                  target_compile_options 里为 ${PROJECTNAME} 目标硬编码了 -g 和 -O1 选项。这导致了无论选择 Debug、Release 还是 MinSizeRel 构建类型,最终生成的二进制文件都包含调试符号且采用固定的低优化等级。

                  1 条回复 最后回复
                  0
                  • John_LinqJ 离线
                    John_LinqJ 离线
                    John_Linq
                    写于 最后由 编辑
                    #8

                    目前我先自己想办法是吗?

                    John_LinqJ 1 条回复 最后回复
                    0
                    • John_LinqJ 离线
                      John_LinqJ 离线
                      John_Linq
                      在 回复了 John_Linq 最后由 编辑
                      #9

                      John_Linq 我手动改好了

                      1 条回复 最后回复
                      0
                      • ,FrankieF Frankie 将这个主题转为问答主题
                      • ,FrankieF Frankie 将这个主题标记为已解决

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      25
                      demo
                      22
                      lin stack
                      13
                      uds
                      13
                      md14
                      6
                      yt-link
                      6
                      fbl
                      5
                      adc模块
                      4
                      Online Users
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门