当前位置: 首页 > news >正文

在Ubuntu上利用loongarch64交叉编译工具编译opencv4.4.0

配置好loongarch64交叉编译工具环境,可以参考我之前写的【在Windows下利用LoongArch-toolchain交叉编译Qt】
安装好cmake、cmake-gui
下载opencv源码,
解压opencv源码
在源码的platforms/linux下,复制aarch64-gnu.toolchain .cmake,将复制出来的文件更改名称为loongarch64-gnu.toolchain .cmake
在这里插入图片描述
然后更改其内容为:
(注意,主要就是更改GNU_MACHINE的内容,将其改成你的交叉编译工具所在的目录+一点前缀)

set(CMAKE_SYSTEM_PROCESSOR loongarch64)
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "/home/yong/Desktop/Loongnix/loongarch64-linux-gnu-rc1.6/bin/loongarch64-linux-gnu" CACHE STRING "GNU compiler triple")
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")

然后参考【配置交叉编译环境@Ubuntu20.04+opencv4.7.0】,设置好必要的参数(在选择交叉编译配置文件时,记得要选择我们前面配好的loongarch64-gnu.toolchain .cmake
在这里插入图片描述
然后把不必要的选项都取消勾选,免得处理复杂的依赖关系以及不必要的编译时间。
记得勾选一下world,这样就把所编译的所有模块都编译成一个dll,这样用起来方便。
在这里插入图片描述

然后就是到build文件夹下常规操作了

make -j8
make install

创建sysroot

同步文件

创建sysroot,下面的操作都是参考【交叉编译Qt库】搞的
使用rsync同步文件到到主机的sysroot中(要求本机和目标机器都安装了rsync, 可以使用这个命令安装apt install rsync
把目标设备和PC在一个局域网下,使用rsync目录同步文件,rsync将只复制更改的文件,对后面部署会节省大量时间。
在虚拟机上,创建sysroot目录,然后将文件同步下来

mkdir -p ~/sysroot/usr
mkdir -p ~/sysroot/lib
cd ~
rsync -avz --rsync-path="sudo rsync" --delete root@192.168.0.200:/lib sysroot/lib
rsync -avz --rsync-path="sudo rsync" --delete root@192.168.0.200:/usr/include sysroot/usr
rsync -avz --rsync-path="sudo rsync" --delete root@192.168.0.200:/usr/lib sysroot/usr

命令解释

rsync
用于远程或本地文件同步的工具,支持增量传输(仅传输变化的部分)。-avz
-a:归档模式(保留权限、符号链接等,相当于 -rlptgoD)。
-v: verbose(显示详细同步过程)。
-z:压缩传输(减少网络带宽占用)。--rsync-path="sudo rsync"
指定在远程设备上执行 rsync 时使用 sudo 提权(因为 /lib 是系统目录,普通用户可能无权直接读取)。
等效于在远程执行:
sudo rsync /lib ...--delete
删除本地 sysroot/lib 中不存在于远程 /lib 的文件(保持严格同步,避免残留旧文件)。
慎用:如果本地 sysroot/lib 有其他文件会被强制删除!cat@192.168.0.200:/lib
从远程设备(IP 192.168.0.200,用户 cat)的 /lib 目录同步数据。sysroot/lib
本地目标路径(将远程 /lib 同步到本地的 sysroot/lib 目录)。

根据实际设备ip,修改上面的192.168.0.200,假如用了不是默认端口,可以使用-e "ssh -p 2233"来指定端口。
比如

rsync -avz -e "ssh -p 5678" --rsync-path="sudo rsync" --delete root@192.168.0.200:/usr/include sysroot/usr 

消除软连接错误

rsync同步文件,有些软连接库是使用绝对路径,交叉编译时会出错。我们可以使用symlinks修改绝对路径为相对路径,
安装命令: sudo apt-get install symlinks
使用命令: symlinks -rc ~/sysroot


参考:
【配置交叉编译环境@Ubuntu20.04+opencv4.7.0】

【为树莓派4交叉编译QT5.14.2(带EGLFS支持)】
【交叉编译Qt库】

http://www.xdnf.cn/news/953605.html

相关文章:

  • 【排错】ollama报错unable to load model
  • 【知识点】第8章:程序设计方法论
  • CKA考试知识点分享(6)---PriorityClass
  • 自动化测试工具playwright中文文档-------19.评估JavaScript
  • 初版BL程序一些细节整理(碎碎念)
  • 相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
  • 无线耳机存储痛点解决方案-64Mb Quad-SPI Pseudo-SRAM CS56404L
  • 向量几何的二元性:叉乘模长与内积投影的深层联系
  • 安宝特方案丨从依赖经验到数据驱动:AR套件重构特种装备装配与质检全流程
  • SQL注入篇-sqlmap的配置和使用
  • 分布式计算框架学习笔记
  • 我的世界Java版1.21.4的Fabric模组开发教程(十二)方块状态
  • UE5 文本框自动换行
  • 苍穹外卖--缓存菜品
  • 用docker来安装部署freeswitch记录
  • “一张网,万般用”——聊聊网络虚拟化到底怎么实现的
  • 大话软工笔记—记录形式
  • React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
  • XCTF-web-easyupload
  • Python 实现 Web 静态服务器(HTTP 协议)
  • 语义化商品详情API:AI赋能下一代电商平台数据接口的创新应用
  • 【Dv3Admin】系统视图菜单管理API文件解析
  • ArcGIS Pro 3.4 二次开发 - 栅格
  • 【李沐-动手学深度学习v2】1.Colab学习环境配置
  • 如何给浏览器安装WeTab插件
  • 安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
  • 图片组件baseImage
  • Redux完整指南:从入门到精通
  • 群创3.5寸液晶模组LQ035NC111参数资料
  • PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础