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

YunTu Forum

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

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

已定时 已固定 已锁定 已移动 开发环境搭建
9 帖子 3 发布者 898 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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 在 中 引用了 这个主题
    • 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

                  • 云途开发生态介绍

                    快速上手云途开发生态

                  • 云途论坛规则/Yuntu Forum Rules

                    发帖前请查看

                  • YT CONFIG TOOL调查问卷

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

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

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