当前位置: 首页 > 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库】

相关文章:

  • 接口 RESTful 中的超媒体:REST 架构的灵魂驱动
  • AI人工智能与LLM语言大模型
  • AIGC 基础篇 Python基础 03 列表与条件判断
  • OpenCV CUDA模块光流计算-----实现Farneback光流算法的类cv::cuda::FarnebackOpticalFlow
  • FreeRTOS队列
  • c语言——字符函数
  • 查询宝塔的数据库信息
  • 多轮对话实现
  • 【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
  • 格恩朗超声波水表 绿色助农 精准领航​
  • 02.运算符
  • [ linux-系统 ] 进程控制
  • helm使用说明和实例
  • 赞助打赏单页HTML源码(源码下载)
  • 基于算法竞赛的c++编程(24)位运算及其应用
  • python3基础语法梳理(一)
  • 安全领域新突破:可视化让隐患无处遁形
  • Easy Excel
  • c语言(持续更新)
  • 使用DataX同步MySQL数据
  • 网站排名工具/免费的网站推广方法
  • 做任务的设计网站/企业网站推广注意事项
  • 一图读懂制作网站/新闻头条
  • 网站的主要内容/湖北疫情最新消息
  • 为什么自己做不出一个好网站/关键词排名seo
  • 奇趣网做网站/抖音推广渠道有哪些