1、首先opencv是用C++写的,要基于gcc和g++,所以Linux中要有这个
sudo yum update
sudo yum install gcc gcc-c++
2、将安装包opencv-4.6.0.zip上传至【/opt/software/opencv】目录下
需要的包都在这里了
链接:https://pan.baidu.com/s/1CApu9JUcP9oDVR96n6WQGA?pwd=1234
提取码:1234
3、解压opencv-4.6.0.zip并进入opencv-4.6.0,同时创建build文件夹
tar -xzvf opencv-4.6.0.tar.gz
cd opencv-4.6.0
mkdir build
cd build
4、进行编译
cmake -D BUILD_SHARED_LIBS=OFF -D BUILD_TEST=OFF ..
如果不行,再用下面这个
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opt/software/opencv/opencv-4.6.0 …
5、查看CPU核数并执行make命令
cat /proc/cpuinfo | grep "cpu cores" | uniq
make -j8
sudo make install
6、这个时候/opt/software/opencv/opencv-4.6.0/build/lib下,编译之后,如果不生成 opencv_java460.so 文件,是因为cmke需要java环境和ant
解决办法:从上面的网盘直接下载,放入到/usr/lib目录下即可
7、使用opencv时,要加载opencv_java460.so文件,代码中加入下面这段
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
8、但是!启动可能会报错,我遇到两个问题
第一个:/lib64/libm.so.6: version `GLIBC_2.29' not found
第二个:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found
输入命令查询了一下当前版本
rpm -q glibc
ldd --version
strings /lib64/libm.so.6 | grep GLIBC_
查询GLIBC的版本为GLIBC_2.28
strings /lib64/libstdc++.so.6 | grep GLIBC
查询GLIBCXX的版本为GLIBCXX_3.4.25
8、解决第一个问题,准备升级相应版本,先升级GLIBC,这个一定要慎重,装错了可能机器就启动不了,你就凉了
安装步骤如下:
8.1、先拉取压缩包并进行解压
cd /opt/software/glibc2.29
拉取:wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
解压:tar -zxvf glibc-2.29.tar.gz
8.2、创建build文件夹并编译
mkdir build
cd build
../configure --prefix=/usr
make -j8
sudo make install
8.3、最后安装完,可能会有两个报错,没关系一样用
查询一下版本
ldd --version
9、解决第二个问题
9.1、全局搜一下,看看有没有大于3.4.26版本的
find / -name "libstdc++.so.6.0.*"
我搜完之后,在docker容器中有高版本的,直接复制一份到/usr/lib64下
cp /data/lib/docker/overlay2/037d450f681bfcfd8d2c46bd47c7d196b41faf07345ebc138c0c873f5821a7ef/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 /usr/lib64
9.2、查看软连接的原始文件路径
readlink -f /lib64/libstdc++.so.6
# 备份软连接
mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6.bak
9.3、将新的文件【/usr/lib64/libstdc++.so.6.0.28】软连接到【/lib64/libstdc++.so.6】上
ln -s /usr/lib64/libstdc++.so.6.0.28 /lib64/libstdc++.so.6