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

手动编译 OpenCV 4.1.0 源码,生成 ARM64 动态库 (.so),然后在 Petalinux 中打包使用。

准备交叉编译环境

安装SDK前需确保已编译过工程,执行以下命令生成SDK:

petalinux-build
petalinux-package --sysroot
petalinux-package --sdk

生成的安装包位于./images/linux/sdk.sh,安装命令示例:

./images/linux/sdk.sh -d ~/petalinux_sdk_2020.2

下载OpenCV源码

创建构建目录并下载指定版本源码:

mkdir ~/opencv4_build && cd ~/opencv4_build
wget https://github.com/opencv/opencv/archive/4.1.0.zip
wget https://github.com/opencv/opencv_contrib/archive/4.1.0.zip
unzip 4.1.0.zip && unzip 4.1.0.zip.1
mv opencv-4.1.0 opencv
mv opencv_contrib-4.1.0 opencv_contrib

配置交叉编译工具链

创建或修改aarch64-gnu.toolchain.cmake文件,确保包含以下关键配置:

# aarch64-gnu.toolchain.cmake
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR aarch64)# 指定交叉编译器
SET(CMAKE_C_COMPILER   /opt/petalinux/2020.2/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gcc)
SET(CMAKE_CXX_COMPILER /opt/petalinux/2020.2/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-g++)# 指定 sysroot
SET(CMAKE_FIND_ROOT_PATH /opt/petalinux/2020.2/sysroots/aarch64-xilinx-linux)# 指定 sysroot
SET(CMAKE_SYSROOT /opt/petalinux/2020.2/sysroots/aarch64-xilinx-linux)# 搜索规则
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)

生成CMake构建配置

执行CMake时需指定关键参数:

cmake ../opencv \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_TOOLCHAIN_FILE=../opencv/platforms/linux/aarch64-gnu.toolchain.cmake \-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \-DCMAKE_INSTALL_PREFIX=/usr/local \-DWITH_TBB=OFF \-DWITH_GSTREAMER=ON \-DWITH_FFMPEG=ON \-DWITH_OPENCL=OFF \-DWITH_V4L=OFF \-DBUILD_opencv_python2=OFF \-DBUILD_opencv_python3=OFF \-DBUILD_TESTS=OFF \-DBUILD_PERF_TESTS=OFF \-DBUILD_DOCS=OFF \-DBUILD_EXAMPLES=OFF \-DENABLE_NEON=ON \-DENABLE_VFPV3=OFF \-DBUILD_opencv_xfeatures2d=OFF

执行编译与安装

使用多线程编译并指定安装目录:

make -j$(nproc)
make install DESTDIR=~/opencv4_build/install

关键配置说明

  1. 编译器路径:必须指向PetaLinux SDK中的交叉编译器
  2. 模块控制:禁用Python绑定和非必要模块可减少编译体积
  3. NEON加速:针对ZynqMP的Cortex-A53内核启用NEON指令集
  4. 安装目录:通过DESTDIR参数控制部署文件的输出位置

常见问题处理

若遇到依赖缺失错误,需在PetaLinux环境中安装对应开发包:

petalinux-config -c rootfs

在菜单中启用packagegroup-petalinux-opencv相关选项后重新构建系统镜像。

http://www.dtcms.com/a/426926.html

相关文章:

  • 乐从做网站wordpress lover主题
  • 品牌型网站制作有哪些公司自建房设计
  • 知微传感Dkam系列3D相机SDK例程篇:CSharp点云滤波
  • AEO 与 SEO 双引擎:整合策略赢得搜索全域可见性
  • 精读C++20设计模式:行为型设计模式:中介者模式
  • 【C++经典例题】逆波兰表达式求值:栈的经典应用与实现详解
  • mmcv 安装 2025
  • 设计模式(C++)详解——观察者模式(Observer)(2)
  • LeetCode 392 判断子序列
  • 树的存储结构
  • 2025年9月GESP(C++三级):数组清零
  • 怎样查看网站建设时间注册公司需要什么费用
  • Deepoc具身模型外拓板:重塑居家服务机器人的交互革命
  • cpuset v1
  • 2025年9月个人工作生活总结
  • Java SE “JDK1.8新特性”面试清单(含超通俗生活案例与深度理解)
  • 站台建筑资阳网站推广
  • 【论文阅读 | ECCV 2024 | DAMSDet:具有竞争性查询选择与自适应特征融合的动态自适应多光谱检测变换器】
  • 企业网站 三网系统好玩有趣的网站
  • 小程序的页面宽度 设置多少合适??
  • 基于libwebsockets与cJson的ASR Server实时语音识别实现指南
  • golang 写路由的时候要注意
  • EXCEL哪个版本开始支持VSTO-office插件?
  • 盲盒抽卡机小程序的技术挑战与解决方案
  • 全网网站建设推广国外设计网站都有哪些
  • 零基础学AI大模型之LangChain聊天模型多案例实战
  • GPU 网络基础,Part 2(MoE 训练中的网络挑战;什么是前、后端网络;什么是东西向、南北向流量)
  • 【菜狗学聚类】序列嵌入表示、UMAP降维——20250930
  • 网站外链建设的八大基本准则东大桥做网站的公司
  • MySQL进阶知识点(八)---- SQL优化