交叉编译opencv(Cpp)于arm64架构开发板上

适用于开发板离线+极简系统;

采用外部主机交叉编译+传输的思路

1.工具与环境需求

交叉编译工具,如aarch64-linux-gnu-gcc/g++

cmake基础编译工具

复制代码
sudo apt install aarch64-linux-gnu-gcc aarch64-linux-gnu-g++ cmake

2.下载源码

进入工作目录;

git clone opencv的库到本地,并选择相应版本

复制代码
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.8.0

克隆下来的东西都会放在当前目录的opencv目录下;

在当前目录,创建build、opencv-arm-install文件夹,用于存放编译与安装结果。

3.编译安装

同一目录下,新建一个工具链文件toolchain.cmake,写入内容:

复制代码
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR aarch64)

SET(CMAKE_SYSROOT /home/why/arm-sysroot)

SET(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)
SET(CMAKE_FIND_ROOT_PATH  /home/why/arm-sysroot)

SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

注意:根据主机具体位置修改

CMAKE_SYSROOT 环境变量为交叉编译工具链的系统文件,包括了工具链的头文件库文件。

可以通过开发板现有的arm架构库拷贝;或者自主编译构造;

自主编译可见: 于离线OpenEuler系统开发板上安装g++/gcc及各类基础库-CSDN博客

CMAKE_C_COMPILER 环境变量为交叉编译工具链的位置

可以通过which查询

进入编译目录,进行编译

复制代码
cd build

cmake ../opencv \
    -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/home/why/projects/opencv/opencv-arm-install \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_TESTS=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DWITH_TIFF=OFF \
    -DWITH_QT=OFF \
    -DWITH_GTK=OFF \
    -DWITH_OPENGL=OFF \
    -DWITH_V4L=OFF \
    -DWITH_JPEG=ON \
    -DWITH_PNG=ON \
    -DBUILD_opencv_python=OFF

注意修改DCMAKE_INSTALL_PREFIX 环境变量为我们刚刚创建的/opencv-arm-install目录

编译,安装(过程需要一定时间)

复制代码
make -j$(nproc) 
make install

此时在我们创建的opencv-arm-install目录下,就可以找到编译出来的各个文件;

文件结构通常包括lib、include、bin等目录;

将整个opencv-arm-install打包,传输到开发板;解压到主目录下的usr/文件夹下,即可成功将opencv的各种库文件安装进开发板系统目录。

相关推荐
装不满的克莱因瓶2 分钟前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
楚山之石12 分钟前
【Radiology】影像组学的标准化与可重复性:IBSI 卷积滤波器共识及其未能覆盖的环节
人工智能·学习·机器学习·mri
东姬AI18 分钟前
挖出948个内核漏洞、自动写补丁:GPT-6 Cyber把AI推进“实战岗“,内容行业还卡在哪一关?
人工智能·网络安全·openai·gpt-6
用户29914221968025 分钟前
GitHub 热榜项目:日榜(2026-11-10)
人工智能·开源·github
用户29914221968031 分钟前
AI 日报(2026年11月10日)
人工智能
QXWZ_IA1 小时前
定位数据怎么推给 IoT 平台?消息协议选型与接入准备
网络·人工智能·物联网·安全
java_logo1 小时前
Docker 部署 ReMe:轻松搭建 AI Agent 记忆管理平台
人工智能·docker·容器·ai agent·轩辕镜像·reme·agentscope-ai
硅谷秋水1 小时前
从VLM规划器到机器人智能体:面向依赖历史信息的操控任务自演化框架
人工智能·机器学习·语言模型·机器人
小李不想当小白1 小时前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
西安小哥1 小时前
端侧跑大模型,真正的门槛不在参数量:一次 596 秒到 10 秒的压缩路径复盘
前端·人工智能