交叉编译是在一个平台上编译另外一个平台可用的应用程序,此时可以想象,另外一个平台上的系统库不同,所以我们要指定编译时使用的系统库。另外一个平台上运行环境不同,内存的大小端等,所以我们要使用单独编译工具。
即分别设置 SYSROOT 和 C_COMPILER / CXX_COMPILER

编译linaro环境下的三方库

这里介绍使用交叉编译的方式,编译三方库的过程。

一般流程

正常地,我们为cmake设置好要用的工具链,系统环境,以及编译输出的库路径,直接cd build && cmake .. && make install即可。

  1. 创建一个 aarch64.toolchain.cmake 文件,并写入如下内容。(路径按实际情况修改)
cmake_minimum_required(VERSION 2.8.0)set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)set(TOOLCHAIN_DIR /usr/local/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu)
set(CMAKE_SYSROOT  /usr/local/arm/sysroot)
set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-g++)set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
  1. 创建一个build.sh,并写入如下内容。
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../aarch64.toolchain.cmake -DCMAKE_INSTALL_PREFIX=../opt ..
make install
  1. 查看输出结果

tree opt,正常应该可以看到你想要的目录树结构。

确认后,就可以将opt目录直接拷贝走,拿去使用了。

当然,还有一些三方库是没有这么容易编译的。

部分三方库编译

opencv 编译

原本按照上面的一般流程,opencv是可能编译失败的,或者说这里首先要清晰我们的目标。

可能失败的原因是,opencv有些模块依赖很多其他的库,而我们提供的 $CMAKE_SYSROOT目录下如果找不到这些库,就会导致编译失败。

但是,我们的目标可能只是使用opencv的核心库,如opencv_video这样的库,我们是不打算使用的。所以直接忽略他,不进行编译即可。

  1. 同一般方法的1 2步骤,发现最后一步 make install发生错误,即缺少一部分库,阻止了编译的继续。
  2. 调整编译选项,只保留主要的核心库。
ccmake build

保留图示几项,其中opencv_world是把要生成的so打包成一个。

按回车是修改,修改完成后,按 c 是生成配置。

完成之后,即可再进入build目录 make install

ubuntu 上交叉编译 linaro 的库相关推荐

  1. 【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )

    文章目录 I . Ubuntu 中交叉编译 Android 动态库 II . Ubuntu 中交叉编译 Android 静态库 I . Ubuntu 中交叉编译 Android 动态库 1 . 要编译 ...

  2. 手机linux编译器,在linux上交叉编译helloWorld到android手机上去

    在ubuntu上交叉编译helloWorld到arm64的android手机上去. 这里NDK用的是r19及以上的版本. 1. 安装NDK 这里下载了 android-ndk-r21b,解压到 /ho ...

  3. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )

    文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...

  4. arm ffmpeg报错:Invalid data found when processing input(没解决)(在ubuntu上能正常运行)(重新交叉编译后问题解决)

    文章目录 报错 原因分析 报错 如图,运行ffmpeg指令时,报错: ffmpeg -i 1e1fee9790f26fa3_20221421292.264 -vcodec copy -f mp4 te ...

  5. ubuntu上建立mini2440 qt编译环境

    参考mini2440手册,从5.3章开始建立交叉编译环境.跟着流程走,在设置环境变量的时候,发现ubuntu的root文件夹不可进入,修改权限进入修改.bashrc文件发现重启后不起作用.为了不每次开 ...

  6. 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )

    文章目录 I . NDK platforms 目录下的 函数库 II . Ubuntu 配置 NDK 交叉编译环境 III . 同时指定编译的头文件和库文件 IV . 指定编译的头文件 V . 指定编 ...

  7. Ubuntu搭建交叉编译环境(arm、mips、powerpc)

    Ubuntu搭建交叉编译环境 说点什么吧 为什么需要交叉编译 交叉编译环境简介 Arm交叉编译环境搭建 Mips交叉编译环境搭建 Powerpc交叉编译环境搭建 说点什么吧 为什么需要交叉编译 如果要 ...

  8. 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序 (学习老罗的)

    不得不说,老罗写的太好了. 按照他的方法,我两次就成功了. 不过有点让人奇怪的地方就是 第一次我make snod是成功的 但是执行如下代码:       root@android:/ # cd sy ...

  9. Ubuntu 上使用 qemu 模拟 Arm64 linux

    Ubuntu 上用 qemu 模拟 Arm64 linux 环境配置 1. 安装Arm64交叉编译工具链 2. 安装qemu 下载源码包 编译 编译Linux kernel 编译qemu 编译busy ...

  10. 在Ubuntu上源码安装MySQL+安装问题解决+安全优化

    当然,MySQL的安装方法多种多样,在Ubuntu上,你可以采用apt-get的方式安装,这样的好处是:快速方便.基本上,它会帮你解决所有的函数库依赖问题,正常情况下,只要apt-get执行完成,那么 ...

最新文章

  1. 大厂白嫖拖垮开源!开源届码农:用户脾气大需求多还不给钱
  2. c语言链表缓冲区,求助! 链表和scanf()缓冲区问题
  3. Python_问题收录总结
  4. TFTP更新linux或android系统文件
  5. 集成spring框架的web.xml
  6. CSS中transform:skew属性理解
  7. mysql ak uk_mysql表的查询
  8. mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  9. dll加载失败,返回126错误
  10. AirSim中的物理引擎
  11. 分享一个经验模态分解分解视频,讲的超好
  12. javascript typeof 和 instanceof 的区别和联系
  13. 怎么利用电脑摄像头和上传图片读取扫描二维码内容
  14. 阿里巴巴和淘宝集团web安全标准
  15. 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
  16. 用Java语言实现文本内容对比的算法和程序
  17. 【胡侃系列】基于多元回归模型的双十一购物狂欢节天猫商城销售额预测
  18. 设计模式:(中介者模式)
  19. 【位运算】系列题目合集
  20. 面向对象编程(OOP)面向对象编程(OOP)

热门文章

  1. java 四分位算法_Java 四分位算法
  2. 设置多个dns_迅雷:要想下载速度快 请避免使用国外公共DNS服务
  3. 实现虚拟机与板卡/树莓派网络互联,并通过笔记本wifi共享上网
  4. eNSP基础实验交换机连接路由器(二层交换机和三层交换机)
  5. 英语4级的分数如何计算机,英语四级分数怎么计算
  6. 移动APP产品经理必学的工具和必上的酷站
  7. avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
  8. Q4实现盈利,搜狐迎来“疫”外春天?
  9. 对话海尔CEO张瑞敏
  10. 双创项目_宫颈癌智能风险检测(4)