使用环境

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

  • 操作系统版本:win11
  • 操作系统平台(x86/x64):x64
  • VsCode 版本:1.98.0 (user setup)
  • EIDE 插件版本:3.21.1
  • C/C++ 插件版本:1.23.6
  • 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):gcc
  • 编译器版本:arm-none-eabi-gcc.exe (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
  • STM32CubeMX版本:6.13
  • MCU:STM32F103C8T6

描述问题

<!-- 使用简明清晰的语言描述您的问题 -->
在eide中,配置更改 ld文件 中的 .text .text*段后,构建时发生multiple definition of ‘’ ...first defined here错误

屏幕截图

<!--使用一些截图能够更好地展现问题 -->

期望现象

<!--您期望应该产生的,但实际上却没有发生的结果-->
使用stm32cude mx生成的makefile工程,修改为上述的 ld文件时,使用make编译通过

  • admin replied to this.
  • Kopizhe

    这可能是路径匹配问题,你必须按照 编译命令里的完整路径进行填写,

    或者 使用通配符

    ld-test.zip
    4MB

    问题摘要:我在使用VSCode和EIDE插件开发STM32F103C8T6项目时,修改了ld文件中的.text段后,构建过程中出现了“multiple definition of ‘’...first defined here”的错误。操作系统为Win11 x64,编译器是arm-none-eabi-gcc 14.2.1,其他环境详情见描述。期望修改后的makefile工程能顺利通过make命令编译。

    这个问题似乎有些复杂,我没有找到有价值的信息,帮你@了管理员

    @admin

    admin 正常导入项目到eide后在不更改ld文件是可以构建成功的,但是改写后构建会报错,但是使用make构建却正常

      Kopizhe

      如果出现 redefine 说明链接了重复的 .o 文件

      你需要贴出完整的 ld,以及你在 cubemx 上可正常编译通过的 makefile

        admin
        eide上使用的ld:

        stm32f103c8tx-flash-copy-2.s
        6kB

        make使用的ld文件和makefile:

        stm32f103c8tx-flash-copy-3.s
        6kB
        makefile.txt
        5kB

        admin
        这是整个项目工程

        ld-test.7z
        1MB

        我还在STM32CubeIDE上构建成功

          Kopizhe

          这可能是路径匹配问题,你必须按照 编译命令里的完整路径进行填写,

          或者 使用通配符

          ld-test.zip
          4MB
            Write a Reply...