Linux下交叉编译opencv
1、下载opencv源码
下载地址:https://opencv.org/releases/
选择你需要的版本,点击Sources。
将源码放在ubuntu随便一个目录下并解压
进入解压好的opencv目录,创建两个文件夹build和install:
2、cmake-gui配置:
首先打开cmake-gui,若没有,请使用sudo apt-get install安装、
圆圈处填上opencv源码路径,矩形处填刚刚创建的build路径。
点击configure
这两个地方和我选一样的
Target System →Operating System 填写Linux (L大写,填入其他如:linux-arm,后面configure会出现错误);
Compliers → C and Complier → C++填入对应交叉编译工具链gcc和g++路径;
Target Root: 交叉编译工具链bin目录路径
Finish; 无报错
交叉编译工具自行下载,网上一堆教程。
配置结束就是这样
在cmake-gui中取消勾选WITH_1394
然后把这个位置换成刚刚创建的install目录:
3、开始编译
进入build目录,使用sudo make -j4开始编译,这个过程很漫长。。。
报错:
往上翻发现:
修改这个文件:
加上这一行,保存、退出,
#define HAVE_PTHREAD
make clean一下,再重新编译
新错误:
修改方法:
进入报错文件:
加上图中这一句:
加上这一行,保存、退出,
make clean一下,再重新编译
新错误:
解决方法:
进入${HOME}/opencv-3.3.14/3rdparty/libpng/pngpriv.h
将这一段代码
# if (defined(ARM_NEON) || defined(__ARM_NEON)) && */
改成
# if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \
编译成功:
4、安装:
在build下面继续执行make install:
进入install目录查看:
出现以上文件表示编译成功!
5、编译安装opencv扩展库:
先将opencv_contrib-4.5.2,版本和你编译的opencv版本要一样.
找到 OPENCV_EXTRA_MODULES_PATH 项,选择扩展库源码 opencv_contrib目录下的 modules 目录
点击 Configure ,生成配置
点击 Generate ,生成 Makefile
make -j8
make install
生成的扩展库会在install/lib目录下。
6、移植到嵌入式设备上:
将编译好的install文件夹放在板子的任意位置
打开 /etc/ld.so.conf文件
vi /etc/ld.so.conf
添加库的绝对路径,例如:
/usr/install/lib
保存并退出
生效路径
ldconfig
大功告成!