交叉编译原理分析

什么是交叉编译:

交叉编译是指在一种环境(操作系统+芯片指令)中编译另外一种环境的程序。

名词定义:

  1. host:执行编译操作的环境
  2. target:最终运行编译结果的环境

有些什么特殊的地方:

  1. 编译器一定是host中的程序,但是编译器输出的程序却是是target中运行的。
  2. host上面不存在target中编译或者运行需要的头文件和库。

要做的事情:

  1. 需要一种能够在host上执行,然后把c/c++代码编程target上面运行的二进制执行文件的编译器。
    1. 通过cmake的CMAKE_C_COMPILER和CMAKE_CXX_COMPILER可以设置编译器。
    2. 每个target环境需要提供我们需要的编译工具。工具里面一般分为host和target两个目录。注意编译器一定要到host里面去找。
    3. 并且有的编译器其实是很多编译器的集合。比如CUDA的编译器nvcc在运行的时候还需要提供c++的编译器的路径。这个可以通过CMAKE_CUDA_HOST_COMPILER来设置。
  2. 设置能够找到target中的库和头文件的地址
    1. 可以通过cmake的CMAKE_FIND_ROOT_PATH设置这个目录。
    2. 也有的编译器要求设置特殊的环境变量来制定查找的目录,这个更具编译工具的文档来确定。
  3. 上面说的这些操作就是所谓的toolchain。有的编译工具会提供一个toolchain的脚本,你只需把这个脚本的地址告诉cmake就行了。使用CMAKE_TOOLCHAIN_FILE来设置。不过现在应该对toolchain也没有太多神秘感了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值