背景:需要在Hi3559a上运行opencv相关程序(Multi-core模式)。
服务器上是vmware装的ubuntu16.04_64位, opencv是3.3.0版本
交叉编译器:aarch64-himix100-linux-g++ aarch64-himix100-linux-gcc
步骤如下:
1. 下载opencv源码并解压(略)
2. apt-get install cmake-qt-gui
3. cmake-gui, 配置方式如 https://blog.csdn.net/sanallen/article/details/81227182 严格安照他的流程走。
重点说一些坑:
1. 可能会遇到not found : zlib.h找不到, 需要改cmake-gui里面的一个选项:ZLIB_INCLUDE_DIR,改成 opencv目录下的相关文件夹,比如我的是:/home/xxxx/opencv-3.3.0/3rdparty/zlib
2. make install 后需要手动把 opencv/build/3rdparty/lib 里面的库 拷贝到 make install 时候安装的位置下的lib文件夹里面,比如/usr/local/lib
3. 测试编译的时候,需要注意链接顺序,最被需要的(opencv_core)放在最后,比如
aarch64-himix100-linux-g++ \
-o testopencv testopencv.cpp \
-I /home/xxxx/rootfs/fakeroot/root/opencv/include \
-L /home/xxxx/rootfs/fakeroot/root/opencv/lib \
-lopencv_highgui -lopencv_imgcodecs \
-lopencv_imgproc -lopencv_core \
-lpthread -lzlib -ldl -llibjpeg
不然会出现诸如Undefined reference to cvLog, cvCartToPolar等等明明定义了却莫名其妙的错误。