alpine 编译opencv

Posted by Naah on Wednesday, Jun 09,2021 18:11:34

0 环境准备

  1. docker镜像:openjdk:8-jdk-alpine

1 ANT(java需要,普通编译可跳过)

1.1 下载ant

cd /app
wget https://downloads.apache.org//ant/binaries/apache-ant-1.9.15-bin.zip
unzip apache-ant-1.9.15-bin.zip

1.2 配置ANT_HOME环境变量

配置下方目录为你的目录

vi /etc/profile
export ANT_HOME=/app/apache-ant-1.9.15                                  
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$ANT_HOME/bin
source /etc/profile

2 编译opencv

2.1 下载opencv

wget https://pd.zwc365.com/seturl/https://gh.con.sh/https://github.com/opencv/opencv/archive/4.5.1.tar.gz
tar -zxvf 4.5.1.tar.gz
cd opencv-4.5.1

2.2 安装opencv编译依赖

apk add python gcc g++ cmake make linux-headers
cd 3rdparty/ippicv
wget https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/ippicv/master_20191018/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz

ippicv.cmake文件修改: https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/ 改成你的目录 file:/app/opencv-4.5.1/3rdparty/ippicv/

2.3 编译

cd ../..
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TESTS=OFF ..
make -j8
make install

2.4 查看jar包及依赖库

jar文件是java的接口文件,so是linux的动态链接库

cd /usr/local/share/java/opencv4
ls

libopencv_java451.so opencv-451.jar

3 问题汇总

3.1 fatal error: linux/auxvec.h: No such file

alpine缺少linux的headers文件

解决:

apk add linux-headers

3.2 编译后没有/usr/local/share/java目录

查看上方cmake后的输出日志,下方的antJNIJava wrappers都需要有内容,不能为NO

  1. ant为NO:说明apache-ant没有安装,查看上方安装ant,千万不要用apk add apache-ant,会导致java-wrappers找不到
  2. JNI为NO:JAVA_HOME环境变量没找到,或java目录文件不全
  3. Java wrappers为NO:这里有两种情况,可能是JAVA_HOME的问题、也可能是上面说的ant配置有问题,会导致ant不为NO,java为NO
--   Java:
--     ant:                         /usr/local/bin/ant (ver 1.10.9)
--     JNI:                         /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/include /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/include/darwin /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/include
--     Java wrappers:               YES
--     Java tests:                  YES
--
--   Install to:                    /usr/local/Cellar/opencv/4.5.1