gpt4 book ai didi

使用特定链接器的 CMake 交叉编译不会将参数传递给 armlink

转载 作者:太空狗 更新时间:2023-10-29 15:05:39 26 4
gpt4 key购买 nike

我正在尝试为嵌入式 ARM Cortex 构建交叉编译一个项目,但我无法让链接器工作。我想使用 armlink,但没有文件传递到 armlink,因此没有生成 .elf 文件。

我的 CMakeLists.txt 非常简单,如下所示。之后显示失败,表明 armlink 由 makefile 调用而没有任何参数。

任何指示都会有所帮助 - 我搜索并阅读了很多帖子,但它们似乎都有更多涉及的要求。

cmake_minimum_required(VERSION 2.8)

project(test_arm)
enable_language(C ASM)

# Cross-compilation for ARM
SET(CMAKE_C_COMPILER armcc)
SET(CMAKE_LINKER armlink)
SET(CMAKE_C_LINK_EXECUTABLE armlink)

SET(CMAKE_C_FLAGS "--cpu=Cortex-M3")
SET(LINK_FLAGS "--map --ro-base=0x0 --rw-base=0x0008000 --first='boot.o(RESET)' --datacompressor=off")
SET(CMAKE_EXE_LINKER_FLAGS "--map --ro-base=0x0 --rw-base=0x0008000 --first='boot.o(RESET)' --datacompressor=off")

include_directories(../include)

add_executable(blinky blinky.c)
set_target_properties(blinky PROPERTIES LINKER_LANGUAGE C)

失败如下,但我想这对某些人来说是显而易见的,因为我的 CMakeLists 中有一些愚蠢的问题:

$ make VERBOSE=1
[100%] Building C object CMakeFiles/blinky.dir/blinky.c.o
/usr/bin/cmake -E cmake_link_script CMakeFiles/blinky.dir/link.txt --verbose=1
armlink
Linking C executable blinky
Product: DS-5 Professional 5.21.0 [5210017]
Component: ARM Compiler 5.05 update 1 (build 106)
Tool: armlink [4d0efa]
For support see http://www.arm.com/support/
Software supplied by: ARM Limited
Usage: armlink option-list input-file-list
where
....

我原以为 CMake 生成的 Makefile 会调用 armlink,如:

armlink --map --ro-base=0x0 --rw-base=0x0008000 \
--first='boot.o(RESET)' --datacompressor=off \
CMakeFiles/blinky.dir/blinky.c.o -o blinky.elf

最佳答案

CMake v3.5 开头您不再需要 Keil ARM C/C++ 编译工具的工具链:

Support was added for the ARM Compiler (arm.com) with compiler id ARMCC.

只需相应地设置您的 C/CXX 编译器变量

cmake -DCMAKE_C_COMPILER:PATH="C:\Program Files (x86)\DS-5\bin\armcc.exe"
-DCMAKE_CXX_COMPILER:PATH="C:\Program Files (x86)\DS-5\bin\armcc.exe"
...

引用资料

关于使用特定链接器的 CMake 交叉编译不会将参数传递给 armlink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30313387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com