【发布时间】:2021-07-04 11:51:01
【问题描述】:
我正在尝试交叉编译,主机是 wondows,目标是 stm32(arm)。我正在尝试从 arm-none-eabi-ld 生成地图文件。 我的问题是双重的
- 我无法生成地图文件。这是我的主要问题。
- 当我运行 build clean 时,我的 .hex 文件和 .bin 文件没有被删除。
请在下面找到我的工具链 cmake 文件(arm-none-eabi.cmake)。
MESSAGE("Running : arm-none-eabi.cmake") SET(CMAKE_SYSTEM_PROCESSOR arm) SET(CMAKE_SYSTEM_NAME Generic) SET(CMAKE_C_COMPILER_WORKS TRUE) SET(CMAKE_CXX_COMPILER_WORKS TRUE) SET(CMAKE_TRY_COMPILE_TARGTE_TYPE STATIC_LIBRARY) SET(TARGET STM32F030x4) SET(ARCH armv6-m) SET(CPU cortex-m0) SET(ARM_ISA mthumb) SET(CMAKE_C_COMPILER arm-none-eabi-gcc) SET(CMAKE_CXX_COMPILER arm-none-eabi-g++) SET(CMAKE_ASM_COMPILER arm-none-eabi-g++) SET(CMAKE_SIZE arm-none-eabi-size) SET(CMAKE_OBJDUMP arm-none-eabi-objdump) SET(CMAKE_OBJCOPY arm-none-eabi-objcopy) SET(OPTIMISATION Og) SET(DEBUG "ggdb") SET(CMAKE_COMMON_FLAGS "-march=${ARCH} -mcpu=${CPU} -${ARM_ISA} -D${TARGET} -${OPTIMISATION} -${DEBUG} -Wall -Wextra -ffunction-sections -fdata-sections -nostdlib -ffreestanding -fno-builtin --specs=nosys.specs -lc --entry main") SET(CMAKE_ASM_FLAGS "${CMAKE_COMMON_FLAGS}") SET(CMAKE_C_FLAGS "${CMAKE_COMMON_FLAGS} ") #-std=gnull SET(CMAKE_CXX_FLAGS "${CMAKE_COMMON_FLAGS} -fno-rtti -fno-exceptions -Wno-volatile -std=c++1z") SET(CMAKE_LINKER_FLAGS "${CMAKE_COMMON_FLAGS} -nostartfiles -Wl,-Map,\"${TARGET}.map\" --specs-nosys.specs")
-Wl,-Map,"${TARGET}.map" 命令没有生成地图文件。
我的 CmakeLists.txt 文件
CMAKE_MINIMUM_REQUIRED(VERSION 3.20) INCLUDE("CMake/arm-none-eabi.cmake") SET(CMAKE_C_STANDARD 11) SET(CMAKE_CXX_STANDARD 17) PROJECT(BLINKY VERSION 1.0.1 DESCRIPTION "Blinky Example") MESSAGE("Building "${PROJECT_NAME}) FILE(GLOB_RECURSE LDSCRIPTS "ldscripts/*.ld" ) FOREACH(file ${LDSCRIPTS}) SET(CMAKE_LINKER_FLAGS "${CAMKE_LINKER_FLAGS} -T \"${file}\" ") ENDFOREACH() #Setup project headers INCLUDE_DIRECTORIES( "Core/" "Drivers/" ) #Setup porject sources FILE(GLOB_RECURSE APPLICATION_SOURCE "Application/*.c" "Application/*.cpp" "Application/*.s" "Core/*.c" "Core/*cpp" "Core/*.s" "Drivers/*.c" "Drivers/*.cpp" "Drivers/*.s" ) ADD_EXECUTABLE(${TARGET}.elf ${APPLICATION_SOURCE}) ADD_CUSTOM_TARGET(${TARGET}.bin ALL DEPENDS ${TARGET}.elf COMMAND ${CMAKE_OBJCOPY} -O binary ${TARGET}.elf ${TARGET}.bin) ADD_CUSTOM_TARGET(${TARGET}.hex ALL DEPENDS ${TARGET}.elf COMMAND ${CMAKE_OBJCOPY} -O ihex ${TARGET}.elf ${TARGET}.hex) ADD_CUSTOM_TARGET(SIZE ALL ${CMAKE_SIZE} ${TARGET}.elf DEPENDS ${TARGET}.elf)
【问题讨论】:
标签: assembly cmake stm32 ld elf