嵌入式linux学习之交叉编译opencv
时间: 2025-03-08 22:02:26 浏览: 33
### 交叉编译 OpenCV 至嵌入式 Linux 环境
#### 安装必要的依赖项
为了成功完成交叉编译工作,在主机环境(如Ubuntu 18.04)中需先安装一系列必需的软件包。这些通常包括构建工具、版本控制系统和其他辅助库,具体命令如下所示:
```bash
sudo apt-get update && sudo apt-get install -y \
build-essential cmake git pkg-config libgtk-3-dev \
libavcodec-dev libavformat-dev libswscale-dev \
python3-dev python3-numpy libtbb2 libtbb-dev \
libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
```
#### 获取交叉编译工具链并设置环境变量
对于特定的目标架构(例如ARM64),获取适合该平台的预构建交叉编译器非常重要。这可以通过官方渠道或者第三方资源来实现。一旦获得合适的工具链,应当将其路径添加至系统的`PATH`环境中以便后续调用。
假设使用的交叉编译工具前缀为`aarch64-linux-gnu-`,则可以这样操作:
```bash
export PATH=/path/to/toolchain/bin:$PATH
```
#### 下载 OpenCV 源码及其额外模块
从GitHub仓库克隆最新的OpenCV源代码,并且如果需要的话也应同时拉取附加功能所在的opencv_contrib存储库。此步骤确保拥有最新特性与修复后的稳定版程序。
```bash
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 3.4.9
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 3.4.9
```
#### 配置 CMake 参数以适应目标硬件特点
利用CMake作为项目配置管理工具时,必须指定恰当参数使生成物适用于目的设备。这里特别注意要指明交叉编译器的位置以及任何可能影响性能表现的关键选项。
下面是一个典型的例子,其中包含了针对RK3399这样的ARM处理器优化的一些常用设定:
```bash
mkdir -p build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64.toolchain.cmake \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
../opencv/
```
请注意这里的`aarch64.toolchain.cmake`文件应该根据实际使用的工具链情况进行调整编写[^1]。
#### 编译过程中的注意事项
启动多线程加速编译速度之后耐心等待直至结束即可得到所需的二进制文件集合。考虑到不同阶段可能会遇到各种各样的错误提示,建议仔细阅读日志信息排查问题所在。
```bash
make -j$(nproc)
```
#### 将产物传输给目标机器执行测试验证
最后一步就是把刚刚制作好的静态链接库复制粘贴到对应的嵌入式平台上进行初步的功能检测。由于之前已经关闭了共享库的支持(`BUILD_SHARED_LIBS=OFF`),所以理论上只需要搬运`.a`结尾的对象文件就足够满足大多数应用场景的需求了。
---
阅读全文
相关推荐


















