CMake 交叉编译

交叉编译就是说在平台 A (宿主机)上编译出可以在平台 B (目标机) 上运行的程序,比如在 x86 上编译 ARM 程序

要交叉编译首先要去下载目标平台的工具链,比如要编译 ARM 程序就应该去下载 Linaro 提供的工具链

交叉编译时,我们的 CMake 文件也需要做一些改动

指定目标机的操作系统和处理器架构

SET (CMAKE_SYSTEM_NAME Linux)
SET (CMAKE_SYSTEM_PROCESSOR aarch64)

更换编译器

CMake 提供一些变量来控制程序的编译和链接:

  • CMAKE_C_COMPILER :编译 C 代码的程序
  • CMAKE_CXX_COMPILER :编译 C++ 代码的程序
SET (CMAKE_C_COMPILER   "aarch64-linux-gnu-gcc")
SET (CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")

更换编译器前应该更改 PATH 环境变量,将你的交叉编译编译器路径放进去,否则 CMake 是没法找到它们的

将以上指令放到一个 xxx.cmake 中,比如 aarch64-linux-gnu.toolchain.cmake,然后以 cmake -DCMAKE_TOOLCHAIN_FILE=aarch64-linux-gnu.toolchain.cmake .. 的形式使用

CMake 交叉编译的更多相关文章

  1. CMake交叉编译配置

    很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译.即在你host宿主机上要生成target目标机的程序.里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等 ...

  2. cmake交叉编译android(转)

    生成cmake编译所需的文件 #-H指向CMakeLists.txt文件父级目录 #-B指向中间产物目录 #-DCMAKE_LIBRARY_OUTPUT_DIRECTORY指向so输出目录 #-DCM ...

  3. CMAKE交叉编译快速入门

    cmake 工具 cmake 使用非常简单,最常用的用法是 cmake . 在当前目录执行cmake 官方帮助 -D <var>:<type>=<value> -D ...

  4. Ubuntu下VsCode+CMake 交叉编译

    在安装配置好VsCode后,下载相关插件.如图: 其中CMake Tools是为了方便使用CMake的扩展工具. 在创建工程前,先在VSCode打开一个空的目录(你的Project目录),再对CMak ...

  5. docker搭建ros-indigo-arm交叉编译环境

    ROS运行环境:ARM ubuntu14.04 + ROS indigo在arm环境下编译ros应用程序,速度极慢,无法忍受,尝试在x86机器上搭建docker+ros交叉编译环境. 交叉编译环境的搭 ...

  6. 在 linux 下使用 CMake 构建应用程序

    学习cmake http://xwz.me/wiki/doku.php?id=cmake 碰到的一些问题: 1.You have changed variables that require your ...

  7. easymake cmake xmake nmake ...

    最简单的Makefile,但是还是大程序少不了makefile工具 #CC=arm-linux-gnueabihf-CC=target:    $(CC)gcc -o algo_main algo_m ...

  8. CMake最好的学习资料

    本文为转载,阅读不友好,请先查看原文:https://blog.gmem.cc/cmake-study-note 收下为原文内容================> 基础知识 CMake简介 CM ...

  9. Easymake

    Easymake太好用了,偷懒神器,强力推荐. 一.根目录下的easymake.mk就是makefile模板,我们自定义的makefile只需要包含这个模板即可 include ../../easym ...

随机推荐

  1. 读《疯狂Java讲义》笔记总结一

    最近在读<疯狂Java讲义>,现把其中遇到的一些自己以前没掌握的点儿记录下来. 1.字符串相关 字符串不是基本类型,字符串是一个类,也就是一个引用类型. 字符串转int类型String a ...

  2. Spark-寒假-实验4

    1.spark-shell 交互式编程 (1)该系总共有多少学生: 执行命令: var tests=sc.textFile("file:///home/hadoop/studata/chap ...

  3. 【一个小发现】VictoriaMetrics中:vm-storage的备份文件,无法给单机版使用

    首先导入一个按天的备份: vmrestore-prod \ -configFilePath="/etc/cos/config.ini" \ -credsFilePath=" ...

  4. Google插件开发探索

    简单的开始 https://blog.lateral.io/2016/04/create-chrome-extension-modify-websites-html-css/ 基础教程 https:/ ...

  5. vue学习11-监听属性

    <!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <meta http ...

  6. 简述BIO/NIO/AIO前世今生

    如下程序是简单实现了一个极其简单的WEB服务器,用来监听某个端口,接受客户端输入输出信息. 但这个程序有一个致命的问题就是连接会长时间阻塞 于是BIO版本出现了,改成了  一个连接 一个线程来处理请求 ...

  7. java-异常-finally代码块

    1 package p1.exception; 2 3 4 class Demo_0{ 5 public int show(int index) throws ArrayIndexOutOfBound ...

  8. vscode自定义代码片段,自定义注释片段(动态时间)

    下载vscode 一.打开vscode,点击左下角设置图标. 二.点击用户代码片段 三.点击新建全局代码片段文件 四.输入自定义代码片段配置文件名,例如:vue.json 五.进行代码片段配置示例如下 ...

  9. db2日志模式、备份归档、恢复解析

    DB2的日志分为两种模式,日志循环与归档日志,也就是非归档和归档模式.下面就具体介绍一下这两种方式以及和备份归档设置的关系. 一.日志循环 这是默认方式,也就是非归档模式,这种模式只支持(backup ...

  10. Hello,find!

    Hello,find! 前言 余幼时,每至除夕,爆竹声声,如雷贯耳,醒于梦中,便知春节将至.与兄长二三人,执摔炮六七只, 玩耍于廷中.出门罢,廷中白雪覆于黄土之上.二三尺之外,见犬窝,余之爱犬趴于其中 ...