CAFFE在Ubuntu18.04系统下安装必须安装的依赖项

一、卸载cuda8.0

使用cuda自带的卸载工具进行卸载。

  1.  
    cd /usr/local/cuda/bin
  2.  
    sudo ./uninstall_cuda_9.0.pl

非常好的参考博客:
https://blog.csdn.net/yhaolpz/article/details/71375762
其次参考博客:
https://www.jianshu.com/p/39d3e8f31ea2
https://www.jianshu.com/p/9dec21b287e8
更换清华源:https://blog.csdn.net/linuxarm123/article/details/99299954(根据不同的ubuntu版本进行更换)

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install git cmake build-essential





Nvidia driver-410

系统自带440驱动要装cuda10,先将驱动全部卸载,再安装410

卸载

sudo apt-get --purge remove nvidia*
sudo apt autoremove

自带驱动屏蔽

在终端输入

lsmod | grep nouveau

如果有输出需要禁用系统自带的 nouveau 驱动↓,没有就跳过
创建一个配置文件

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

在该配置文件中添加如下内容

blacklist nouveau
options nouveau modeset=0

进行更新

sudo update-initramfs -u

然后重启,在终端输入

lsmod | grep nouveau

无输出则成功

安装

sudo apt-get install nvidia-driver-410

检查

lsmod | grep nvidia

输出类似↓就安装成功了

nvidia_uvm            790528  0
nvidia_drm             40960  0
nvidia_modeset       1040384  1 nvidia_drm
nvidia              16633856  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        172032  2 mgag200,nvidia_drm
drm                   458752  6 drm_kms_helper,mgag200,nvidia_drm,ttm
ipmi_msghandler       102400  4 ipmi_devintf,ipmi_si,nvidia,ipmi_ssif

也可以nvidia-smi查看驱动版本


下面安装cuda9.0
也可以nvidia-smi查看驱动版本
buntu18.04预装GCC7.3,而CUDA9.0支持GCC6.0以下版本。gcc和g++从自带的7降级到6
gcc --version
g++ --version
sudo apt install gcc-5 g++-5
sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++

官网下载cuda_9.0.176_384.81_linux-run和cuda_9.0.176.1_linux.run文件,cd到目录下

chmod +x cuda_9.0.176_384.81_linux-run
./cuda_9.0.176_384.81_linux-run
注意这个地方要选NO其他都Y

 

 #安装补丁

chmod +x cuda_9.0.176.1_linux-run
./ cuda_9.0.176.1_linux-run

 

添加环境变量

sudo vim ~/.bashrc
#cuda9.0
export PATH=$PATH:/usr/local/cuda/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/

source ~/.bashrc
现在就可以查询一下(看看是否安装成功):
 nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
再运行example
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

输出GPU相关信息就对啦,一定要sudo


接下来安装cudnn

官网下载cudnn-9.0-linux-x64-v7.6.4.38.tgz,cd到目录里

tar -zxvf cudnn-9.0-linux-x64-v7.6.4.38.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

miniconda3

官网下载Miniconda3-latest-Linux-x86_64.sh,cd到目录里

chmod +x Miniconda3-latest-Linux-x86_64.sh
./ Miniconda3-latest-Linux-x86_64.sh
链接:https://www.jianshu.com/p/9dec21b287e8
 
 
下面安装CAFFE
Ubuntu17.04以上的版本使用命令直接安装
sudo apt install caffe-cuda #Gpu版本

sudo apt install caffe-cpu #Cpu版本
 
 
否则下载安装:
git clone https://github.com/BVLC/caffe.git
 
 
修改MakeFile.config文件
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config #没有图形界面
sudo gedit Makefile.config #有图形界面
 
vim显示行号命令:set number
第5行
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
第22行去掉#

 

 


第27行
# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
CUSTOM_CXX := g++

第39行
# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
CUDA_ARCH :=-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
 
第51行
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS:=open
 
第69行
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
 
 
第79行
一定要检测是否有对应的文件夹。按照自己电脑python的路径来写
# Uncomment to use Python 3 (default is Python 2)(下面黑色加粗的地方一定要查看清楚是不是这个)
如我的是(/usr/lib/x86_64-linux-gnu/):

 

那么就需要将这个地方改成 libboost_python-py35(如果是虚拟环境也参考下一篇)

PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_INCLUDE := /usr/include/python3.6m \
/usr/lib/python3/dist-packages/numpy/core/include

第92行

#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

第95行
# Whatever else you find you need goes here.

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

第104行

 

 

sudo

修改Makefile
 
第425行
 将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
 第181行
 将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial


cd python
for req in $(cat requirements.txt); do pip install $req; done //这个我觉得没啥用我改pip3了
 
cd ..
make all -j48 #j后面的数字代表处理器的核数
错误:
compilation terminated.
Makefile:592: recipe for target '.build_release/examples/cpp_classification/classification.o'
make: *** [.build_release/examples/cpp_classification/classification.o] Error 1
In file included from ./include/caffe/parallel.hpp:19:0,
from ./include/caffe/caffe.hpp:13,
from tools/upgrade_net_proto_text.cpp:10:
./include/caffe/util/nccl.hpp:5:18: fatal error: nccl.h: 没有那个文件或目录
#include <nccl.h>
 
解决:
git clone https://github.com/NVIDIA/nccl.git
sudo make install -j48
sudo ldconfig
最后:
sudo make runtest -j48
make pycaffe -j48
最后一步如果还报错比如

说明CAFFE没有切换到当前的python中还是使用的以前旧的配置的caffe路径,这时候可能旧版本的caffe中的cuda不是当前的cuda就会报错这个路径下面的caffeine:

 

 解决方法是将caffe的路径切换到当前的caffe/python

 sudo echo export PYTHONPATH="/data1/wangman/caffe/python" >> ~/.bashrc

source ~/.bashrc

这样就可以了

gedit ~/.bashrc 

 

 

其他错误:

 

Ubuntu安装Caffe .build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0:

 

sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig

 

python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file:

不是虚拟环境 

cp /usr/local/python3.6.3/lib/libpython3.6m.so.1.0 /usr/lib64/

 虚拟环境:

cp /home/cbpm2016/.conda/envs/conpy36_dc/lib/libpython3.6m.so.1.0 /usr/lib/

 error while loading shared libraries: libcudnn.so.7: cannot open shared object file: No such file or directory
sudo cp /usr/local/cuda-9.0/lib64/libcudnn.so.7 /usr/local/lib/
sudo cp /usr/local/cuda/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7
sudo ldconfig

 

 python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录

sudo apt-get install python-numpy

 

c++11版本的错误,需要在Makefile文件这个三个地方加-std=c++11

 

/usr/bin/ld: 找不到 -lboost_python
collect2: error: ld returned 1 exit status

参考博客

https://blog.csdn.net/u012505617/article/details/88556621

2. 原因分析:

在caffe编译配置文件Makefile.config里面的PYTHON_LIBRARIES := boost_python3 python3.6m 一行中,找不到boost_python3造成的。

 

3. 解决办法:

  • 使用的是Python3.5

进入/usr/lib/x86_64-linux-gnu/ 下,查看有没有libboost_python-py3.5.so,如果有链接一下就可以了

sudo ln -s libboost_python-py3.5.so libboost_python3.so
  • 使用的是Python3.6

如果使用的是Python3.6版本,发现是没有libboost_python-py3.6.so 文件的,那就得自己编译一个了,方法如下

下载 boost_1_67_0.tar.gz:

  1.  
    # 下载boost_1_67_0.tar.gz
  2.  
    wget http://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.tar.gz
  3.  
    # 进入文件夹
  4.  
    cd boost_1_67_0/
  5.  
    # 生成 .so 文件
  6.  
    ./bootstrap.sh --with-libraries=python --with-toolset=gcc
  7.  
    ./b2 --with-python include="/usr/include/python3.6m"
  8.  
    # 安装文件

看到生成了 libboost_python3.6.so 等文件:

  •  链接文件
  1.  
    sudo ln -s libboost_python36.so libboost_python3.so
  2.  
    sudo ln -s libboost_python36.a libboost_python3.a
  3.  
     
  4.  
    sudo cp /usr/local/lib/libboost_python36.a /usr/lib/x86_64-linux-gnu/libboost_python-py36.a
  5.  
    sudo cp /usr/local/lib/libboost_python36.so /usr/lib/x86_64-linux-gnu/libboost_python3.so

这样就完成了

 

caffe 编译时build_release/lib/libcaffe.so: undefined reference to `boost::cpp_regex_traits

boost版本才知道,我电脑上已经安装了boost_1_65,版本太高,所以解决方法为降低版本。

 删除现有的boost   sudo apt-get remove libboost*

1. 下载boost安装包

到http://www.boost.org/下载boost的安装包,在这里我下载boost_1_58_0.tar.gz

解压:

tar zxvf boost_1_58_0.tar.gz

2.设置编译器和所选库

cd boost_1_58_0

运行bootstrap.sh脚本并设置相关参数:

./bootstrap.sh --with-libraries=all --with-toolset=gcc

--with-libraries指定编译哪些boost库,all的话就是全部编译,只想编译部分库的话就把库的名称写上,之间用 , 号分隔即可

--with-toolset指定编译时使用哪种编译器,Linux下使用gcc即可,如果系统中安装了多个版本的gcc,在这里可以指定gcc的版本,比如--with-toolset=gcc-4.4

3.编译boost

执行以下命令开始进行boost的编译:

./b2 --with-python include="/qp/3rd/anaconda3/include/python2.7/"

注:--with-python include="/qp/3rd/anaconda3/include/python2.7/"  一定要加上,否则后面make all时编译不过,报错Cannot find -ldboost_python

4.安装boost

最后执行以下命令开始安装boost:

./b2 install --prefix=/usr     (选这个会覆盖原先版本)

5.添加环境变量

vim ~/.bashrc

文件末尾添加:

# Boost

export BOOST_INCLUDE=/usr /include/

export BOOST_LIB=/usr/lib

 

参考:

https://blog.csdn.net/bodybo/article/details/79962814

https://blog.csdn.net/aiyi2555/article/details/101628253/
原文链接:https://blog.csdn.net/m0_37844017/article/details/106911662

https://blog.csdn.net/glt3953/article/details/9960179?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

给一个高能版本(亲测有效---思路是不用指定conda里面的python 而是指定默认的python3进行编译) 

 

卸载boost

1
2
3
4
cd /usr/local/include
rm -rf boost
cd /usr/local/lib
rm -rf libboost_python*

  

 make file

PYTHON_INCLUDE :=/usr/include/python3.6m \
/usr/lib/python3.6/dist-packages/numpy/core/include

# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/lib

然后编译boost:

1
<em id="__mceDel" style="background-color: rgba(255, 255, 255, 1); font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px">./bootstrap.sh --with-python=/usr/bin/python2 </em>

./bootstrap.sh --with-libraries=python --with-toolset=gcc
./b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="/usr/include/python3.6m/"
sudo ./b2 install


cd /usr/local/lib
sudo ln -s libboost_python.so libboost_python3.so
sudo ln -s libboost_python.a libboost_python3.a

 

 

编译RefineDet如下错误
boost::re_detail_106600::cpp_regex_traits_implementation

系统中存在多个版本的boost库,删除掉所有的boost库(包括头文件和库),重新安装一个放在系统里面

手动清除下面所有有关boost的东西
sudo rm -rf /usr/lib/libboost*
sudo rm -rf /usr/local/lib/libboost*
sudo rm -rf /usr/include/boost
sudo rm -rf /usr/local/include/boost

安装教程参考博客(小平推荐):

https://blog.csdn.net/bengqian1670/article/details/89222006

https://blog.csdn.net/qq_39916709/article/details/106919122

 

----------------------------------------------------------------------------------


改了后上面的错误没有了,又出现了新的错误
/usr/local/cuda-10.2/include/crt/common_functions.h:74:24: error: token ""__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."" is not valid in preprocessor expressions
#define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."

参考这篇文章的解决方案

将boost库的版本由boost_1_65_0.tar.gz升到boost_1_71_0.tar.gz完成编译

----------------------------------------------------------------------------------


编译金库的工程又出现 net.h: 没有那个文件或目录
该错误不是caffe的问题是系统未安装ncnn,通过官方的安装文档安装解决了该错误https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux

----------------------------------------------------------------------------------
libcurl.so中报undefined reference to `SSL_CTX_new@OPENSSL_1.0.0' ......
使用以前的libcurl.so会报错
删除掉了工程中licurl的头文件和库,在网上下载curl-7.65.3.tar.xz,安装到了系统环境中

----------------------------------------------------------------------------------


opencv报未定义引用cv::String::allocate函数

好像用系统自带的opencv才报的这个错误,自己手动安装解决这个问题
----------------------------------------------------------------------------------


然后是libcaffe.so找不到ffmpeg的库 找不到opencv的库,重新安装ffmpeg和opencv,再编译RefineDet,如果报ffmpeg相关的错,就把缺少的库加到RefineDet的Makefile里面
编译完成后把libcaffe.so拷贝到系统工程中


都解决好后编译成功


----------------------------------------------------------------------------------

boost编译后找不到libboost_python3.a 在编译时指定python的路径
/bootstrap.sh --with-libraries=python --with-toolset=gcc
./b2 cflags=’-fPIC’ cxxflags=’-fPIC’ --with-python include="/home/cbpm/anaconda3/include/python3.6m"

 

posted @   水木清扬  阅读(341)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示