opencv 编译linux和arm-linux

本文详细介绍了在Ubuntu 16.04环境下使用CMake和NDK r15c进行OpenCV的LINUX和ARM-LINUX编译流程,包括动态库和静态库的构建,以及shell脚本自动化编译过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

源码下载

环境搭建

LINUX编译

ARM-LINUX编译

shell脚本

arm 编译错误处理方式


源码下载

Releases - OpenCV

Releases · opencv/opencv · GitHub

环境搭建

系统:ubuntu 16.04

cmake:3.10.2

ndk:r15c

sudo apt-get install cmake
sudo apt-get install gcc
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

缺依赖自行安装

LINUX编译

动态库

cmake ../  -DCMAKE_BUILD_TYPE=RELEASE  -DCMAKE_INSTALL_PREFIX=../install/share/Linux   -DBUILD_ZLIB=ON  -DWITH_IPP=OFF

make -j8 && make install

静态库

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=../install/static/Linux -DBUILD_SHARED_LIBS=FALSE -DBUILD_ZLIB=ON -DWITH_IPP=OFF

make -j8 && make install

ARM-LINUX编译

动态库

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ -DCMAKE_INSTALL_PREFIX=../install/share/Arm-linux -DBUILD_ZLIB=ON -DBUILD_JPEG=ON -DBUILD_PNG=ON -DBUILD_JASPER=ON -DWITH_TIFF=OFF -DWITH_GTK=OFF -DWITH_CUDA=OFF -DWITH_1394=OFF -DWITH_GSTREAMER=OFF -DWITH_OPENEXR=OFF -DWITH_OPENCL=OFF

make -j8 && make install

静态库

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ -DCMAKE_INSTALL_PREFIX=../install/static/Arm-linux -DBUILD_SHARED_LIBS=FALSE -DBUILD_ZLIB=ON -DBUILD_JPEG=ON -DBUILD_PNG=ON -DBUILD_JASPER=ON -DWITH_TIFF=OFF -DWITH_GTK=OFF -DWITH_CUDA=OFF -DWITH_1394=OFF -DWITH_GSTREAMER=OFF -DWITH_OPENEXR=OFF -DWITH_OPENCL=OFF -DWITH_IPP=OFF

make -j8 && make install

辅助:可通过readelf -h libopencv_core.a 查看Machine属性,判断库运行平台

shell脚本

pushd build

THIS_PATH=$(cd `dirname $0`; pwd)

echo "build path : ${THIS_PATH}"

#linux 
rm -irf *
cmake ../  -DCMAKE_BUILD_TYPE=RELEASE  -DCMAKE_INSTALL_PREFIX=../install/share/Linux   -DBUILD_ZLIB=ON  -DWITH_IPP=OFF

make -j8 && make install

rm -irf *
cmake ../  -DCMAKE_BUILD_TYPE=RELEASE  -DCMAKE_INSTALL_PREFIX=../install/static/Linux  -DBUILD_SHARED_LIBS=FALSE  -DBUILD_ZLIB=ON   -DWITH_IPP=OFF

make -j8 && make install

#arm-linx
rm -irf *
cmake ../  -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc  -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++  -DCMAKE_INSTALL_PREFIX=../install/share/Arm-linux  -DBUILD_ZLIB=ON   -DBUILD_JPEG=ON  -DBUILD_PNG=ON  -DBUILD_JASPER=ON  -DWITH_TIFF=OFF -DWITH_GTK=OFF -DWITH_CUDA=OFF -DWITH_1394=OFF -DWITH_GSTREAMER=OFF -DWITH_OPENEXR=OFF -DWITH_OPENCL=OFF -DWITH_IPP=OFF

make -j8 && make install


rm -irf *
cmake ../  -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc  -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++  -DCMAKE_INSTALL_PREFIX=../install/static/Arm-linux -DBUILD_SHARED_LIBS=FALSE  -DBUILD_ZLIB=ON   -DBUILD_JPEG=ON  -DBUILD_PNG=ON  -DBUILD_JASPER=ON  -DWITH_TIFF=OFF -DWITH_GTK=OFF -DWITH_CUDA=OFF -DWITH_1394=OFF -DWITH_GSTREAMER=OFF -DWITH_OPENEXR=OFF -DWITH_OPENCL=OFF -DWITH_IPP=OFF

make -j8 && make install

pop

arm 编译错误处理方式

err: undefined reference to `png_init_filter_functions_neon'

处理方式:修改 3rdparty/libpng/pngpriv.h

/*# if (defined(ARM_NEON) || defined(__ARM_NEON)) && */
 
# if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \

如果cmake下载ipp失败可在cmake参数中怎加如下指令

 -DWITH_IPP=OFF

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值