ubuntu18安装caffe(在docker镜像中)
1.下载镜像
1.1镜像地址:https:///r/meadml/cuda10.1-cudnn7-devel-ubuntu18.04-python3.6即运行docker pull meadml/cuda10.1-cudnn7-devel-ubuntu18.04-python3.6拉取镜像,然后通过镜像创建容器sudo docker run -it -v /home/×××/docker_mnt/docker_caffe:/mnt/docker_mnt --name docker_caffe 95442e197984,并将本地一个位置挂载到镜像系统中。
2.更换apt源,安装vim
2.1直接百度进行操作,参考apt更换源
docker中需要本机挂载的文件夹中创建,并按照链接添加内容,然后,用镜像中命令行先备份原源文件,然后移动过去新的
备份:
mv /etc/apt/sources.list /etc/apt/sources.list.bak拷贝:
mv /mnt/docker_mnt/sources.list /etc/apt/sources.list更新:
apt-get update
apt-get upgrade2.2安装vim:apt-get install vim
3.修改python3为默认python
3.1镜像中仅仅有一个python3.6,update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
4 .安装cmake和openssl
4.1 下载cmake3.17.2和openssl-1.0.2
4.2安装openssl
尽管镜像中存在openssl1.1.1,但是编译cmake时候报错cmake-3.17.2/Utilities/cmcurl/lib/md5.c:88:10: fatal error: openssl/md5.h: No such file or directory,然后执行apt-get install libssl-dev -y,从新编译,还是报错,可能还是openssl问题。所以重装openssl,先安装zlib,然后安装openssl
4.3 安装cmake3.17.2
执行./bootstrap,然后执行make -16报错(不报错的化可以忽略4.3之后内容)
[ 42%] Linking C executable curltest
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `zlib_stateful_expand_block':
c_zlib.c:(.text+0x59): undefined reference to `inflate'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `zlib_stateful_compress_block':
c_zlib.c:(.text+0xda): undefined reference to `deflate'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `bio_zlib_free':
c_zlib.c:(.text+0x12e): undefined reference to `inflateEnd'
c_zlib.c:(.text+0x14d): undefined reference to `deflateEnd'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `zlib_stateful_finish':
c_zlib.c:(.text+0x1c0): undefined reference to `inflateEnd'
c_zlib.c:(.text+0x1c9): undefined reference to `deflateEnd'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `zlib_stateful_init':
c_zlib.c:(.text+0x268): undefined reference to `inflateInit_'
c_zlib.c:(.text+0x2db): undefined reference to `deflateInit_'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `bio_zlib_ctrl':
c_zlib.c:(.text+0x54c): undefined reference to `deflate'
c_zlib.c:(.text+0x61a): undefined reference to `zError'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `bio_zlib_write':
c_zlib.c:(.text+0x825): undefined reference to `deflate'
c_zlib.c:(.text+0x8dc): undefined reference to `zError'
c_zlib.c:(.text+0x94a): undefined reference to `deflateInit_'
/usr/local/ssl/lib/libcrypto.a(c_zlib.o): In function `bio_zlib_read':
c_zlib.c:(.text+0xa1f): undefined reference to `inflate'
c_zlib.c:(.text+0xa8c): undefined reference to `zError'
c_zlib.c:(.text+0xb04): undefined reference to `inflateInit_'
collect2: error: ld returned 1 exit status
Utilities/cmcurl/CMakeFiles/curltest.dir/build.make:109: recipe for target 'Utilities/cmcurl/curltest' failed
make[2]: *** [Utilities/cmcurl/curltest] Error 1
CMakeFiles/Makefile2:1947: recipe for target 'Utilities/cmcurl/CMakeFiles/curltest.dir/all' failed
make[1]: *** [Utilities/cmcurl/CMakeFiles/curltest.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 42%] Linking CXX executable cmsysTestsCxx
[ 42%] Built target cmsysTestsCxx
[ 42%] Linking C static library libcmzstd.a
[ 42%] Built target cmzstd
Makefile:182: recipe for target 'all' failed
make: *** [all] Error 2此处是错误的尝试发现是gcc编译器版本太高gcc --version为gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 然后apt-get install -y gcc-4.8,apt-get install -y g++-4.8,根据配置gcc,g++配置gcc4.8。然后./boos,make -j16还是报错:
[ 17%] Building C object Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_encoder.c.o
^Cmake[2]: *** [Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_compress.c.o] Interrupt
Utilities/cmzstd/CMakeFiles/cmzstd.dir/build.make:277: recipe for target 'Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstdmt_compress.c.o' failed
make[2]: *** [Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstdmt_compress.c.o] Interrupt
Utilities/cmzstd/CMakeFiles/cmzstd.dir/build.make:225: recipe for target 'Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_double_fast.c.o' failed
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:758: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/lzma/lzma_decoder.c.o' failed
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/lzma/lzma_decoder.c.o] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:797: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/lzma/lzma_encoder_optimum_normal.c.o' failed
Utilities/cmbzip2/CMakeFiles/cmbzip2.dir/build.make:134: recipe for target 'Utilities/cmbzip2/CMakeFiles/cmbzip2.dir/compress.c.o' failed
make[2]: *** [Utilities/cmbzip2/CMakeFiles/cmbzip2.dir/compress.c.o] Interrupt
Utilities/cmzstd/CMakeFiles/cmzstd.dir/build.make:238: recipe for target 'Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_fast.c.o' failed
make[2]: *** [Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_fast.c.o] Interrupt
Utilities/cmzstd/CMakeFiles/cmzstd.dir/build.make:251: recipe for target 'Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_lazy.c.o' failed
make[2]: *** [Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_lazy.c.o] Interrupt
Utilities/cmzstd/CMakeFiles/cmzstd.dir/build.make:290: recipe for target 'Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_opt.c.o' failed
make[2]: *** [Utilities/cmzstd/CMakeFiles/cmzstd.dir/lib/compress/zstd_opt.c.o] Interrupt
CMakeFiles/Makefile2:2028: recipe for target 'Utilities/cmbzip2/CMakeFiles/cmbzip2.dir/all' failed
make[1]: *** [Utilities/cmbzip2/CMakeFiles/cmbzip2.dir/all] Interrupt
Utilities/cmexpat/CMakeFiles/cmexpat.dir/build.make:108: recipe for target 'Utilities/cmexpat/CMakeFiles/cmexpat.dir/lib/xmltok.c.o' failed
make[2]: *** [Utilities/cmexpat/CMakeFiles/cmexpat.dir/lib/xmltok.c.o] Interrupt
CMakeFiles/Makefile2:2001: recipe for target 'Utilities/cmexpat/CMakeFiles/cmexpat.dir/all' failed
make[1]: *** [Utilities/cmexpat/CMakeFiles/cmexpat.dir/all] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:771: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/lzma/lzma_encoder.c.o' failed
CMakeFiles/Makefile2:2055: recipe for target 'Utilities/cmzstd/CMakeFiles/cmzstd.dir/all' failed
make[1]: *** [Utilities/cmzstd/CMakeFiles/cmzstd.dir/all] Interrupt
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/lzma/lzma_encoder.c.o] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:875: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/powerpc.c.o' failed
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/powerpc.c.o] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:888: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_coder.c.o' failed
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_coder.c.o] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:901: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_decoder.c.o' failed
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_decoder.c.o] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:914: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_encoder.c.o' failed
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/simple_encoder.c.o] Interrupt
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:927: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/sparc.c.o' failed
make[2]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/simple/sparc.c.o] Interrupt
CMakeFiles/Makefile2:2082: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/all' failed
make[1]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/all] Interrupt
Makefile:182: recipe for target 'all' failed
make: *** [all] Interrupt原因不是gcc版本,然后想起来cmake3.17.2文件夹是之前编译留下的文件夹,所以删除整个文件夹,重新解压缩后,执行./bootstrap,然后执行make -16能够一次通过。 执行make install,最后cmake --version显示cmake version 3.17.2,编译结束。
5.安装opencv3.4.0
以下错误遇到后再进行处理,没遇到不用理会
5.1此步骤遇到问题先确认opencv和opencv_contrib要版本一致,且两个文件夹没问题ubuntu18安装3.4.0(opencv和opencv_contrib要版本一致都从github上下载一致版本(太慢的话从码云:opencv3.4.0和opencv_contrib下载))
报错Unknown CMake command "ocv_append_source_files_cxx_compiler_options"很可能是opencv和opencv_contrib版本不一致导致
5.2遇到IPPICV: Download:ippicv_2020_lnx_intel64_20191018_general.tgz问题
5.3 boostdesc_bgm.i缺失
报错:
[ 48%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o
/mnt/docker_mnt/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory
#include "boostdesc_bgm.i"
^~~~~~~~~~~~~~~~~5.4features2d/test/test_detectors_regression.impl.hpp缺失
报错
/mnt/docker_mnt/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
#include "features2d/test/test_detectors_regression.impl.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~解决方案参考网页中搜索features2d/test/test_detectors_regression.impl.hpp对应解决方案,需要拷贝几个文件并去掉部分cpp文件中#include的目录部分只留文件。之后的几个缺失报错同理解决方案。
5.5
报错
[ 26%] Linking CXX static library ../../lib/libopencv_test_xfeatures2d_pch_dephelp.a
In file included from /mnt/docker_mnt/opencv/modules/stitching/include/opencv2/stitching.hpp:49:0,
from /mnt/docker_mnt/opencv/modules/stitching/src/precomp.hpp:59,
from /mnt/docker_mnt/opencv/build/modules/stitching/opencv_stitching_pch_dephelp.cxx:1:
/mnt/docker_mnt/opencv/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
# include "opencv2/xfeatures2d/cuda.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~5.5至此,opencv-3.4.0编译结束
但是出现了一个问题,python中opencv版本为4.5 ,是git clone时候的错误,还得从头再来一次git clone --branch 3.4.0 https://gitee.com/mirrors/opencv.git这样指定tag后,就因该没问题了。
















