【经验分享】华为海思Hi35xx系列ARM32交叉编译opencv | 您所在的位置:网站首页 › 交叉编译opencv › 【经验分享】华为海思Hi35xx系列ARM32交叉编译opencv |
本教程详细记录了华为海思Hi35xx系列ARM32交叉编译opencv、zlib、libpng的方法。是上一篇x86环境源码编译opencv(【经验分享】ubuntu源码编译opencv)的姊妹篇。 1、编译环境海思Hi35xx的板子需要ARM32位的opencv,我的编译环境是ubuntu1804服务器上使用 arm-himix200-gcc编译器进行交叉编译。与海思交互开发可采用nfs搭建,可参考我之前写过的一篇华为昇腾的板子交互开发配置的教程:【嵌入式AI】atlas500与虚拟机ubuntu交互配置。 2、资料包下载opencv下载网址:https://opencv.org/。 用到的海思编译工具链包如下(搞不到资源的可以联系我): 首先安装海思交叉编译工具链: ./arm-himix200-linux.install开始交叉编译: tar xzvf opencv-3.4.6.tar.gz mkdir hisi_build cd hisi_build新建文件 arm-himix200.camke,在里面添加如下内容(相关路径根据实际设置)。 SET(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_CXX_COMPILER arm-himix200-linux-g++) SET(CMAKE_C_COMPILER arm-himix200-linux-gcc) SET(CMAKE_FIND_ROOT_PATH /opt/hisi-linux/x86-arm/arm-himix200-linux/bin)生成makefile cmake .. -DCMAKE_TOOLCHAIN_FILE=./arm-himix200.cmake -DCMAKE_INSTALL_PREFIX=./lib -DCMAKE_INSTALL_INCLUDEDIR=./include -DCMAKE_BUILD_TYPE=Release -DBUILD_JPEG=ON -DWITH_1394=OFF -DWITH_GTK=OFF sudo make sudo make install进入报错集锦五佳球 【报错集锦五佳球 第五位】 opencv-3.4.6/3rdparty/libpng/pngstruct.h:30:18: fatal error: zlib.h: No such file or directory 【解决方法】 修改 opencv-3.4.6/3rdparty/libpng 下的 CMakeLists.txt 在 ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" ${ZLIB_INCLUDE_DIRS}) 前添加 set(ZLIB_INCLUDE_DIRS "/home/share/opencv/opencv-3.4.6/3rdparty/zlib/")注意修改上面路径。清除cmake,然后重新cmake & make。 可能还有其他类似以上报错,处理方式一样。 【报错集锦五佳球 第四位】 undefined reference to `gzeof’ undefined reference to `_dl_hwcap’ undefined reference to `_dlopen’ 等 【解决方法】 CMakeCache.txt 中找到:添加 -lpthread -lrt -lz -ldl,意思是编译的时候把这些库链接进来: CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -lz -ldl【报错集锦五佳球 第三位】 undefined reference to `inflateValidate’ 【解决方法】 在交叉编译opencv前,需要交叉编译ARM32位的 zlib 和 libpng,方法看下面。 编译器是arm-himix200-linux-gcc,编译libpng前,需要先编译zlib库。 zlib库下载地址http://www.zlib.net/。 下载zlib-1.2.11.tar.gz,解压后,得到zlib-1.2.11。 cd zlib-1.2.11 export CC=arm-himix200-linux-gcc //它的configure不支持用CC变量来指定交叉工具链 ./configure --prefix=/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib sudo make sudo make install之后下载libpng源码,地址:https://sourceforge.net/projects/libpng/files/libpng16/1.6.36/ 下载libpng-1.6.36.tar.gz,解压后,得到libpng-1.6.36。 cd libpng-1.6.36 ./configure CC=arm-himix200-linux-gcc --host=arm-himix200-linux CFLAGS=-I/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib/include LDFLAGS=-L/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib/lib --prefix=/opt/hisi-linux/x86-arm/arm-himix200-linux/libpng此时还需要修改Makefile,把zlib的路径加进去: vi Makefile在DEFAULT_INCLUDES = -I.下面再加一句: DEFAULT_INCLUDES += -I/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib/include sudo make sudo make install之后到安装目录,就可以看到编译出来文件。 然后把刚才生成的两个库的lib 都拷贝到 /opt/hisi-linux/x86-arm/arm-himix200-linux/arm-linux-gnueabi/lib。 收工~ 至于报错集锦五佳球 第二位和第一位,如果你们遇到了请告诉我。 扫描下方二维码即可关注我的微信公众号【极智视界】,获取更多实践项目资源和读书分享,让我们用极致+极客的心态来迎接AI ! |
CopyRight 2018-2019 实验室设备网 版权所有 |