我问这个是下次我使用CMake的时候提醒自己的.它永远不会坚持,谷歌的结果也不是很好.
在CMake中设置和使用变量的语法是什么?
我是微控制器领域的新手.我需要移植一个IDE,它正在为AVR微控制器编译程序,以便为ARM微控制器编译程序.我刚刚将编译器从AVR替换为ARM,并添加了一些选项.以下是命令:
\ARM-GCC\bin\arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft
-Wa,-adhlns="$@.lst" -fmessage-length=0 -mcpu=cortex-m0 -mthumb -g3 -gdwarf-2 -Wl,
--gc-sections -o <Dir_name>\Build_Files\Blink_arm.cpp.elf <Dir_name>\Build_Files\Blink_arm.cpp.o <Dir_name>\Build_Files\core.a
-L<Dir_name>\Build_Files -lm
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我得到以下错误:
tools/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.6.2\libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text+0x18): undefined reference to `_exit'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我可以获得一些关于这个错误的帮助,以及如何解决它.而且我也不知道命令行中的那些选项指定了什么.
我正在尝试交叉编译嵌入式ARM Cortex构建的项目,但我无法使链接器正常工作.我想使用armlink,但没有文件传递给armlink,因此没有生成.elf文件.
我的CMakeLists.txt非常简单,如下所示.之后显示失败,表明makefile在没有任何参数的情况下调用了armlink.
任何指针都会有所帮助 - 我搜索并阅读了很多帖子,但他们似乎都有更多的参与要求.
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)
Run Code Online (Sandbox Code Playgroud)
失败如下,但我想对于我的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 …Run Code Online (Sandbox Code Playgroud)