clion uses arm gcc to compile code generated from cubemx file error
I copied a cubemx ioc file successfully compiled by keil mdk to another empty folder and generated the file, but a link error was reported.
This is cmakelist:
#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE!
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
cmake_minimum_required(VERSION 3.27)
# specify cross-compilers and tools
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_AR arm-none-eabi-ar)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_OBJDUMP arm-none-eabi-objdump)
set(SIZE arm-none-eabi-size)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
# project settings
project(CtrBoard-H7_Manipulator C CXX ASM)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)
#Uncomment for hardware floating point
add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
#Uncomment for software floating point
#add_compile_options(-mfloat-abi=soft)
add_compile_options(-mcpu=cortex-m7 -mthumb -mthumb-interwork)
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0)
# uncomment to mitigate c++17 absolute addresses warnings
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register")
# Enable assembler files preprocessing
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
message(STATUS "Maximum optimization for speed")
add_compile_options(-Ofast)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
message(STATUS "Maximum optimization for speed, debug info included")
add_compile_options(-Ofast -g)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
message(STATUS "Maximum optimization for size")
add_compile_options(-Os)
else ()
message(STATUS "Minimal optimization, debug info included")
add_compile_options(-Og -g)
endif ()
include_directories(Core/Inc Drivers/STM32H7xx_HAL_Driver/Inc Drivers/STM32H7xx_HAL_Driver/Inc/Legacy Middlewares/Third_Party/FreeRTOS/Source/include Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F Drivers/CMSIS/Device/ST/STM32H7xx/Include Drivers/CMSIS/Include Middlewares/ST/ARM/DSP/Inc)
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32H723xx)
file(GLOB_RECURSE SOURCES "Library/*.*" "Core/*.*" "Middlewares/*.*" "Drivers/*.*")
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32H723VGTX_FLASH.ld)
add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map)
add_link_options(-mcpu=cortex-m7 -mthumb -mthumb-interwork)
add_link_options(-T ${LINKER_SCRIPT})
add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT})
set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin)
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
COMMENT "Building ${HEX_FILE}
Building ${BIN_FILE}")
CLion show error:
====================[ Build | CtrBoard-H7_Manipulator.elf | Debug ]=============
D:\Jetbrains\CLion\bin\cmake\win\x64\bin\cmake.exe --build C:\Users\19242\Desktop\Manipulator_clion\cmake-build-debug --target CtrBoard-H7_Manipulator.elf -- -j 6
CMake Deprecation Warning:
Support for "Extra Generators" like
CodeBlocks
is deprecated and will be removed from a future version of CMake. IDEs may
use the cmake-file-api(7) to view CMake-generated project build trees.
-- Minimal optimization, debug info included
-- Configuring done (0.2s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/19242/Desktop/Manipulator_clion/cmake-build-debug
[ 2%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/fdcan.c.obj
[ 4%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/freertos.c.obj
[ 6%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/gpio.c.obj
[ 9%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/main.c.obj
[ 11%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/octospi.c.obj
[ 13%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/stm32h7xx_hal_msp.c.obj
[ 16%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/stm32h7xx_hal_timebase_tim.c.obj
[ 18%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/stm32h7xx_it.c.obj
[ 20%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/syscalls.c.obj
[ 23%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/sysmem.c.obj
[ 25%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Src/system_stm32h7xx.c.obj
[ 27%] Building ASM object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Core/Startup/startup_stm32h723vgtx.s.obj
[ 30%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c.obj
[ 32%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c.obj
[ 34%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c.obj
[ 37%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c.obj
[ 39%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c.obj
[ 41%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.c.obj
[ 44%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c.obj
[ 46%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c.obj
[ 48%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c.obj
[ 51%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c.obj
[ 53%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c.obj
[ 55%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c.obj
[ 58%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c.obj
[ 60%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ospi.c.obj
[ 62%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c.obj
[ 65%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c.obj
[ 67%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c.obj
[ 69%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c.obj
[ 72%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c.obj
[ 74%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c.obj
[ 76%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c.obj
[ 79%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/croutine.c.obj
[ 81%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c.obj
[ 83%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/list.c.obj
[ 86%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c.obj
[ 88%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c.obj
[ 90%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/queue.c.obj
[ 93%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c.obj
[ 95%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/tasks.c.obj
[ 97%] Building C object CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/timers.c.obj
[100%] Linking C executable CtrBoard-H7_Manipulator.elf
d:/gcc-arm/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld.exe:C:/Users/19242/Desktop/Manipulator_clion/STM32H723VGTX_FLASH.ld:91: non constant or forward reference address expression for section .ARM.extab
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: *** [CMakeFiles\CtrBoard-H7_Manipulator.elf.dir\build.make:751: CtrBoard-H7_Manipulator.elf] Error 1
mingw32-make[2]: *** [CMakeFiles\Makefile2:82: CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/all] Error 2
mingw32-make[1]: *** [CMakeFiles\Makefile2:89: CMakeFiles/CtrBoard-H7_Manipulator.elf.dir/rule] Error 2
mingw32-make: *** [Makefile:123: CtrBoard-H7_Manipulator.elf] Error 2
i can't understand why this is error:
d:/gcc-arm/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld.exe:C:/Users/19242/Desktop/Manipulator_clion/STM32H723VGTX_FLASH.ld:91: non constant or forward reference address expression for section .ARM.extab
collect2.exe: error: ld returned 1 exit status

