CAFFE在Ubuntu18.04系统下安装必须安装的依赖项
一、卸载cuda8.0
使用cuda自带的卸载工具进行卸载。
-
cd /usr/local/cuda/bin
-
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
。
Ubuntu17.04以上的版本使用命令直接安装


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

将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:
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
错误:
最后:
sudo make runtest -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:
-
# 下载boost_1_67_0.tar.gz
-
wget http://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.tar.gz
-
# 进入文件夹
-
cd boost_1_67_0/
-
# 生成 .so 文件
-
./bootstrap.sh --with-libraries=python --with-toolset=gcc
-
./b2 --with-python include="/usr/include/python3.6m"
-
# 安装文件
看到生成了 libboost_python3.6.so 等文件:
- 链接文件
-
sudo ln -s libboost_python36.so libboost_python3.so
-
sudo ln -s libboost_python36.a libboost_python3.a
-
-
sudo cp /usr/local/lib/libboost_python36.a /usr/lib/x86_64-linux-gnu/libboost_python-py36.a
-
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"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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吧