ARMCLANG +CMAKE 编译STM32问题

1.项目构建

关于如何配置CMAKE和ARMCLANG 进行STM编译,可以参考以下文章

1.http://t.csdnimg.cn/fyGMrhttp://t.csdnimg.cn/kmwnk vscode + cmake + ninja + ARMCC 配置stm32开发环境http://t.csdnimg.cn/fyGMr

2.http://t.csdnimg.cn/OGG9o  Clion使用ARMClang编译(STM32F1、F4)

使用Cmake构建Armclang armcc编译器编译STM32工程。

可使用Keil或Clion编译。

ARMCC编译器优点:编译代码体积小,不会把未使用的库编译进代码(gcc的痛)

2.使用说明

  1. 使用keil编译工程生成${PROJECT_NAME}.sct
  2. 在cmake中指定工程名和.sct文件路径
  3. 使用cmake编译 

3 编译报错

过程回顾,执行

cmake.exe -G "MinGW Makefiles" -B .\build 
-- The C compiler identification is ARMClang 6.7.1
-- The CXX compiler identification is ARMClang 6.7.1
-- The ASM compiler identification is ARMClang
-- Found assembler: D:/Program/KEIL MDK/ARM/ARMCLANG/bin/armclang.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
-- Detecting CXX compile features
-- Detecting CXX compile features - failed
-- Configuring done (7.8s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/62508/Desktop/trial/trial/build

检测到编译器、连接器,cmakelist.txt 没有问题。

执行 mingw32-make.exe

-- Configuring done (2.2s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/62508/Desktop/trial/trial/build
[  5%] Building C object CMakeFiles/armcc_cmake.dir/Core/Src/gpio.o
[ 10%] Building C object CMakeFiles/armcc_cmake.dir/Core/Src/main.o
[ 15%] Building C object CMakeFiles/armcc_cmake.dir/Core/Src/stm32f1xx_hal_msp.o
[ 20%] Building C object CMakeFiles/armcc_cmake.dir/Core/Src/stm32f1xx_it.o
[ 25%] Building C object CMakeFiles/armcc_cmake.dir/Core/Src/system_stm32f1xx.o
[ 30%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
[ 35%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
[ 40%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
[ 45%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o
[ 50%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
[ 55%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
[ 60%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
[ 65%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o
[ 70%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o
[ 75%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
[ 80%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
[ 85%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
[ 90%] Building C object CMakeFiles/armcc_cmake.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm

armclang.exe: warning: argument unused during compilation: '-D STM32F103xB' [-Wunused-command-line-argument]
armclang.exe: warning: argument unused during compilation: '-D USE_HAL_DRIVER' [-Wunused-command-line-argument]
armclang.exe: warning: argument unused during compilation: '-masm=auto' [-Wunused-command-line-argument]
startup_stm32f103xb.s:1:2: error: unexpected token at start of statement
;******************** (C) COPYRIGHT 2017 STMicroelectronics ********************
^
C:/Users/62508/Desktop/trial/trial/MDK-ARM/startup_stm32f103xb.s:2:2: error: unexpected token at start of statement
;* File Name : startup_stm32f103xb.s
^

显示ARMCLANG 编译器无法识别启动文件的语法,可能是make 方式不对,改为Ninja 后依然出现此错误。

检测ARMCLANG 版本,v6.7.0,将其升级到V6.12.0 后,编译成功,得到程序HEX 文件

PS C:\Users\62508\Desktop\trial\trial> cmake.exe -B .\build -G "MinGW Makefiles"
-- The C compiler identification is ARMClang 6.12.1
-- The CXX compiler identification is ARMClang 6.12.1
-- The ASM compiler identification is ARMClang
-- Found assembler: D:/Program/KEIL MDK/ARM/ARMCLANG/bin/armclang.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
-- Detecting CXX compile features
-- Detecting CXX compile features - failed
-- Configuring done (8.9s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/62508/Desktop/trial/trial/build
PS C:\Users\62508\Desktop\trial\trial> cd .\build
PS C:\Users\62508\Desktop\trial\trial\build> mingw32-make.exe
[  5%] Building C object CMakeFiles/trial.dir/Core/Src/gpio.o
[ 10%] Building C object CMakeFiles/trial.dir/Core/Src/main.o
[ 15%] Building C object CMakeFiles/trial.dir/Core/Src/stm32f1xx_hal_msp.o
[ 20%] Building C object CMakeFiles/trial.dir/Core/Src/stm32f1xx_it.o
[ 25%] Building C object CMakeFiles/trial.dir/Core/Src/system_stm32f1xx.o
[ 30%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
[ 35%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
[ 40%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
[ 45%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o
[ 50%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
[ 55%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
[ 60%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
[ 65%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o
[ 70%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o
[ 75%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
[ 80%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
[ 85%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
[ 90%] Building C object CMakeFiles/trial.dir/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
[ 95%] Building ASM object CMakeFiles/trial.dir/MDK-ARM/startup_stm32f103xb.o
[100%] Linking C executable trial.elf
Program Size: Code=5510 RO-data=302 RW-data=12 ZI-data=1644  
Building C:/Users/62508/Desktop/trial/trial/build/trial.hex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值