Tag: 交叉编译

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

我正在尝试交叉编译嵌入式ARM Cortex构建的项目,但我无法使链接器工作。 我想使用armlink,但没有文件传递给armlink,因此没有生成.elf文件。 我的CMakeLists.txt非常简单,如下所示。 之后显示失败,表明makefile在没有任何参数的情况下调用了armlink。 任何指针都会有所帮助 – 我搜索并阅读了很多post,但他们似乎都有更多的参与要求。 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.co /usr/bin/cmake -E […]

CMake交叉编译:忽略工具链文件中的C标志

我使用cmake进行交叉编译。 在我的工具链文件中有一行 SET(CMAKE_C_FLAGS “-std=gnu99”) 此变量未再次在CMakeLists.txt中设置。 当我运行cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..这个标志被忽略。 更详细: flags.cmake行显示一个空的C_FLAGS =行。 但是在CMakeOutput.log我可以找到一行Build flags: -std=gnu99 。 我发现第二次运行cmake .. (同样有或没有指定工具链文件)修复了这个问题。 但为什么我第一次运行cmake时没有设置? 编辑:添加了MNWE 的CMakeLists.txt: cmake_minimum_required(VERSION 2.6) project(myproject) SET(files src/main.c) add_executable(myexec ${files}) avr.cmake: SET(CMAKE_SYSTEM_NAME Generic) SET(CMAKE_C_COMPILER avr-gcc) SET(CMAKE_C_FLAGS “-std=gnu99”)