具体连接cmake的交叉编译并不参数传递给armlink可以 [英] cmake cross-compile with specific linker doesn't pass arguments to armlink

查看:2192
本文介绍了具体连接cmake的交叉编译并不参数传递给armlink可以的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图交叉编译为嵌入式的ARM Cortex一个项目建立,但无法得到工作链接。我想使用armlink但没有文件传递到armlink根据,因此没有为.elf文件就产生了。

我的CMakeLists.txt是pretty简单,如下。该故障后这表明armlink将是由生成文件不带任何参数调用图所示。

任何指针将帮助 - 我搜索,看了很多帖子,但他们都似乎有更复杂的要求。

  cmake_minimum_required(版本2.8)项目(test_arm)
enable_language(C ASM)#交叉编译为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基=为0x0为--rw-base = 0x0008000 --first ='boot.o(RESET)--datacom pressor ​​= OFF)
SET(CMAKE_EXE_LINKER_FLAGS--map --ro基=为0x0为--rw-base = 0x0008000 --first ='boot.o(RESET)--datacom pressor ​​= OFF)include_directories(../包括)add_executable(的Blinky blinky.c)
set_target_properties(性能的Blinky LINKER_LANGUAGE C)

失败如下:但我想它会因为我有一些愚蠢的问题,我CMakeLists是显而易见的人:

  $使VERBOSE = 1
[100%]大厦C座对象CMakeFiles / blinky.dir / blinky.c.o
在/ usr /斌/ cmake的-E cmake_link_script CMakeFiles / blinky.dir / link.txt --verbose = 1
则armlink
链接C可执行的Blinky
产品名称:DS-5专业版5.21.0 [5210017]
成分:ARM编译器5.05更新1(106建)
工具:armlink可以[4d0efa]
支持见http://www.arm.com/support/
通过附带软件:ARM有限公司
用法:armlink选项列表输入文件列表
哪里
....

我期待CMake的生成Makefile文件调用的armlink的东西,如:

 则armlink --ro --map基地=为0x0为--rw-base = 0x0008000 \\
  --first ='boot.o(RESET)--datacom pressor ​​=关\\
  CMakeFiles / blinky.dir / blinky.c.o -o blinky.elf


解决方案

CMake的V3.5 你并不需要一个工具链对了ARM的Keil C / C ++编译工具:


  

添加了对ARM编译器(arm.com)与编译器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
      ...

参考

I am trying to cross-compile a project for embedded ARM Cortex builds but unable to get the linker working. I want to use armlink but no files are passed to armlink and hence no .elf file is produced.

My CMakeLists.txt is pretty simple and given below. The failure is shown after that which shows that armlink was invoked by the makefile without any arguments.

Any pointers will help - I searched and read many posts but they all seem to have more involved requirements.

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)

The failure is as follows but I guess it would be obvious to someone given that I have some stupid issue in my 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
....

I was expecting the CMake generated Makefile to invoke armlink with something like:

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

解决方案

Starting with CMake v3.5 you don't need a toolchain anymore for Keil ARM C/C++ compilation tools:

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

Just set your C/CXX compiler variables accordingly

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"
      ...

References

这篇关于具体连接cmake的交叉编译并不参数传递给armlink可以的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆