踩坑3-ubuntu caffe 环境配置

caffe的编译比预想复杂很多,其中设计到多个依赖库的配置,在linux下花费了好久,遇到问题就google,百度,最终终于完成啦!

1.安装caffe相关的依赖项

参考caffe官方的网站在ubuntu<17.04下的环境配置   

http://caffe.berkeleyvision.org/install_apt.html

首先一般依赖项

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

CUDA

通过apt-getNVIDIA.run软件包安装。NVIDIA 软件包倾向于遵循更新的库和驱动程序版本,但安装更加手动。如果从包安装,请分别安装库和最新的驱动程序与库捆绑的驱动程序通常已过时。对于仅 CPU 的安装,可以跳过这一步。

BLAS

OpenBLAS通过安装 ATLASsudo apt-get install libatlas-base-dev或通过 MKL 安装 OpenBLAS 以sudo apt-get install libopenblas-dev获得更好的 CPU 性能。

 是一个开源的矩阵计算库,包含了诸多的精度和形式的矩阵计算算法。就精度而言,包括float和double,两种数据类型的数据,其矩阵调用函数也是不一样。不同矩阵,其计算方式也是有所不同,(姑且认为向量也是一维矩阵),例如,向量与向量之间的计算,向量与矩阵之间的计算,矩阵与矩阵之间的计算。

 sudo apt-get install libopenblas-dev

python

安装默认python 版本

sudo apt-get install python-dev

ubuntu 需要使用CUDA8.0

2.环境配置异常记录

1.google库提示未安装,

从而无法安装protobuf(pip可以通过python 安装也可以通过conda安装)

sudo pip install google
# 然后再安装protobuf
sudo pip istall protobuf

2.numpy python算法没有安装

pip install numpy

3.glog以及gflags、lmdb,level

glog是谷歌的google开发的日志实用库,提供基于c++标准输入输出流的接口。

gflags在cafe中主要进行命令行的解析。

lmdb和leveldb在caffe中主是是用于图像数据的存储,所有输入的图像都会转成该格式,以便于统一,另外可以提高磁盘的IO利用率。

4。编译过程报错统计

首先git clone caffe 源码

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

 在软件更新中勾选可从互联网下载,然后

sudo apt-get update
sudo apt-get upgrade #获取可更新软件

2.ModuleNotFoundError: No module named 'google' 问题解决方案

https://blog.csdn.net/zhuquanfu/article/details/105445065

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/

  1. 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
    
  2. 这些就是第二个关键字的库的所有位置,我们想让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*
    
  3. 可以看出系统库使用的实际是1.3.0版本,而anaconda使用的是1.0.0版本

  4. 最后一步就是把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” 的时候使用的指令是

$ sudo apt-get libhdf5-serial-dev

所以相应的需要更改"Makefile.config"文件中的包含目录
ctrl+f 找到

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

然后在后面加上"serial"的包含目录,即:

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

接着需要更改相应的"Makefile"文件,找到

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

就可以了,继续make了。
5 nvcc fatal : Unsupported gpu architecture 'compute_20'

仔细查看了一下 Makefile.config 中 CUDA_ARCH 设置未按规定设置:

# 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所以把下面这两行删除就可以了

-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

7.Ubuntu下caffe 配置(总结踩过的坑)

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

 

 

posted @ 2022-02-19 17:22  ID是菜鸟  阅读(564)  评论(0编辑  收藏  举报