手动编译 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文件,确保包含以下关键配置:

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时需指定关键参数:

bash 复制代码
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

执行编译与安装

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

bash 复制代码
make -j$(nproc)
make install DESTDIR=~/opencv4_build/install

关键配置说明

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

常见问题处理

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

bash 复制代码
petalinux-config -c rootfs

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

相关推荐
用户938515635075 小时前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformer.js 全链路实战
前端·设计模式·typescript
CodeSheep5 小时前
稚晖君公司人事大变动,来了!
前端·后端·程序员
鱼樱前端5 小时前
用 AI 做内容变收入
前端·人工智能·ai编程
浮生望6 小时前
React + TypeScript 组件设计进阶:从类型约束到无状态组件的三次进化
前端
90后的晨仔6 小时前
Mac 开发 uni-app 终极方案:让安卓模拟器彻底脱离 Android Studio 独立运行
前端·vue.js
90后的晨仔6 小时前
别再搞混了!uni-app 中 node_modules 和 uni_modules 到底是什么关系?
前端
kyriewen7 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
谢小飞7 小时前
大文件上传很难?学会这招,GB文件秒传不是梦
前端·node.js
一壶浊酒..7 小时前
Scrape Webpack练习
开发语言·javascript·webpack
程序员黑豆8 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程