踩坑3-ubuntu caffe 环境配置
caffe的编译比预想复杂很多,其中设计到多个依赖库的配置,在linux下花费了好久,遇到问题就google,百度,最终终于完成啦!
1.安装caffe相关的依赖项
参考caffe官方的网站在ubuntu<17.04下的环境配置
1 | http: //caffe.berkeleyvision.org/install_apt.html |
首先一般依赖项
1 2 | sudo apt- get install <br>libprotobuf-dev<br>libleveldb-dev <br>libsnappy-dev <br>libopencv-dev <br>libhdf5-serial-dev<br>protobuf-compiler sudo apt- get install --no-install-recommends libboost-all-dev |
CUDA
通过apt-get
NVIDIA.run
软件包安装。NVIDIA 软件包倾向于遵循更新的库和驱动程序版本,但安装更加手动。如果从包安装,请分别安装库和最新的驱动程序;与库捆绑的驱动程序通常已过时。对于仅 CPU 的安装,可以跳过这一步。
BLAS
OpenBLAS通过安装 ATLASsudo apt-get install libatlas-base-dev
或通过 MKL 安装 OpenBLAS 以sudo apt-get install libopenblas-dev
获得更好的 CPU 性能。
是一个开源的矩阵计算库,包含了诸多的精度和形式的矩阵计算算法。就精度而言,包括float和double,两种数据类型的数据,其矩阵调用函数也是不一样。不同矩阵,其计算方式也是有所不同,(姑且认为向量也是一维矩阵),例如,向量与向量之间的计算,向量与矩阵之间的计算,矩阵与矩阵之间的计算。
1 | sudo apt- get install libopenblas-dev |
python
安装默认python 版本
1 | sudo apt- get install python-dev |
ubuntu 需要使用CUDA8.0
2.环境配置异常记录
1.google库提示未安装,
从而无法安装protobuf(pip可以通过python 安装也可以通过conda安装)
1 | sudo pip install google<br># 然后再安装protobuf<br>sudo pip istall protobuf |
2.numpy python算法没有安装
1 | pip install numpy |
3.glog以及
gflags、
lmdb
,level
glog是谷歌的google开发的日志实用库,提供基于c++标准输入输出流的接口。
gflags在cafe中主要进行命令行的解析。
lmdb和leveldb在caffe中主是是用于图像数据的存储,所有输入的图像都会转成该格式,以便于统一,另外可以提高磁盘的IO利用率。
4。编译过程报错统计
首先git clone caffe 源码
1 2 3 4 5 6 | mkdir build cd build cmake .. make all make install make runtest |
编译过程遇到问题总结
1.虽然之前安装了boost,但是在cmake 时候提示无法找到boost 以及opencv ,后来发现是ubuntu 系统没有更新
参考
https://blog.csdn.net/harbor1981/article/details/86064888
在软件更新中勾选可从互联网下载,然后
1 2 | sudo apt- get update sudo apt- get upgrade #获取可更新软件 |
2.ModuleNotFoundError: No module named 'google' 问题解决方案
https://blog.csdn.net/zhuquanfu/article/details/105445065
1 2 | sudo pip install google sudo pip install protobuf |
3.//usr/lib/x86_64-linux-gnu/libSM.so.6:对‘uuid_unparse_lower@UUID_1.0’未定义的引用
解决libapr-1.so.0:对‘uuid_generate@UUID_1.0’未定义的引用
https://www.codeleading.com/article/87512571131/
解决conda和ros库不兼容问题,libapr-1.so.0:对‘uuid_generate@UUID_1.0’未定义的引用https://yangbenbo.github.io/2020/11/10/%E8%A7%A3%E5%86%B3libapr-1-so-0%EF%BC%9A%E5%AF%B9%E2%80%98uuid-generate-UUID-1-0%E2%80%99%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E5%BC%95%E7%94%A8/
-
locate第二个关键字属于的库:
locate libuuid.so.1
/home/ct/anaconda3/lib/libuuid.so.1 /home/ct/anaconda3/lib/libuuid.so.1.0.0 /home/ct/anaconda3/pkgs/libuuid-1.0.3-h1bed415_2/lib/libuuid.so.1 /home/ct/anaconda3/pkgs/libuuid-1.0.3-h1bed415_2/lib/libuuid.so.1.0.0 /home/ct/research/projects/libuuid-1.0.3/.libs/libuuid.so.1 /home/ct/research/projects/libuuid-1.0.3/.libs/libuuid.so.1.0.0 /lib/x86_64-linux-gnu/libuuid.so.1 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
-
这些就是第二个关键字的库的所有位置,我们想让ros使用系统的库
/lib/x86_64-linux-gnu/libuuid.so.1
,但是由于anaconda的存在,使用的却是/home/ct/anaconda3/lib/libuuid.so.1
可以分别查看这两种库使用的版本:$ ll /lib/x86_64-linux-gnu/ |grep uuid lrwxrwxrwx 1 root root 16 10月 10 17:34 libuuid.so.1 -> libuuid.so.1.3.0 -rw-r--r-- 1 root root 18976 10月 10 17:34 libuuid.so.1.3.0
$ ll /home/ct/anaconda3/lib/ |grep uuid -rw-rw-r-- 2 ct ct 26398 1月 12 2018 libuuid.a -rwxrwxr-x 1 ct ct 950 11月 28 09:09 libuuid.la* lrwxrwxrwx 1 ct ct 16 11月 28 09:09 libuuid.so -> libuuid.so.1.0.0* lrwxrwxrwx 1 ct ct 16 11月 28 09:09 libuuid.so.1 -> libuuid.so.1.0.0* -rwxrwxr-x 2 ct ct 18472 1月 12 2018 libuuid.so.1.0.0*
-
可以看出系统库使用的实际是1.3.0版本,而anaconda使用的是1.0.0版本
-
最后一步就是把anaconda中的库链接到系统的库(这种方法不一定是最好的,但是比较简单)
sudo rm /home/ct/anaconda3/lib/libuuid.so.1 sudo ln -s /lib/x86_64-linux-gnu/libuuid.so.1 /home/ct/anaconda3/lib/libuuid.so.1
4.搭建caffe环境时“error: hdf5.h”找不到的解决方法
https://blog.csdn.net/goofysong/article/details/52116265?%3E
搭建caffe环境时,在最后进行 ”$make all” 操作时,报错找不到 “hdf5.h”,找了半天原因,是因为在安装 “hdf5” 的时候使用的指令是
1 | $ sudo apt- get libhdf5-serial-dev |
所以相应的需要更改"Makefile.config"文件中的包含目录
ctrl+f 找到
1 | INCLUDE_DIRS:=$(PYTHON_INCLUDE) /usr/local/include |
然后在后面加上"serial"的包含目录,即:
1 | INCLUDE_DIRS:=$(PYTHON_INCLUDE) /usr/local/include/usr/include/hdf5/serial/ |
接着需要更改相应的"Makefile"文件,找到
1 | LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 |
更改最后两项为:
1 | LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial |
就可以了,继续make了。
5 nvcc fatal : Unsupported gpu architecture 'compute_20'
仔细查看了一下 Makefile.config 中 CUDA_ARCH 设置未按规定设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 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_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ -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 |
因为我装的是CUDA9.0所以把下面这两行删除就可以了
1 2 | -gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ |
6.caffe编译遇到的问题(持续更新)
https://blog.csdn.net/m0_37407756/article/details/70789271
https://www.cnblogs.com/zwjhq/p/9258432.html
3.配置成功,cmake ->make all ->install ->runtest 结果
cmake gen完成
make all
//usr/lib/x86_64-linux-gnu/libSM.so.6:对‘uuid_generate@UUID_1.0’未定义的引用 解决之
重新make all
genrating ok
make install
make runtest
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库