0 环境准备
- 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
后的输出日志,下方的ant
、JNI
、Java wrappers
都需要有内容,不能为NO
ant
为NO:说明apache-ant没有安装,查看上方安装ant,千万不要用apk add apache-ant,会导致java-wrappers找不到JNI
为NO:JAVA_HOME环境变量没找到,或java目录文件不全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