/usr/bin/ld: 找不到 -lopencv_dep_cudart 的问题

       参考 http://blog.csdn.net/autocyz/article/details/51783857

             http://blog.csdn.net/beizhengren/article/details/76217914

             https://blog.csdn.net/K_Zombie/article/details/50478345

       前言:ubuntn16.04系统自带python2.7,后为了安装tensorflow将其升级为3.5,按此过程成功安装caffe,

                 但是tensorflow不能用了,因为python自动降为2.7,心酸

        安装过程

      1、首先安装各种更新包

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install -y build-essential cmake git pkg-config

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

sudo apt-get install -y libatlas-base-dev

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

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

sudo apt-get install -y python-pip

sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy

sudo apt-get install -y libopencv-dev

2、下载caffe

cd ~
mkdir git  //在home下新建一个git文件夹,用来存放那些从github上git下来的文zong件
git clone https://github.com/BVLC/caffe.git    //从github上git caffe

3、开始安装

cd caffe    //打开到刚刚git下来的caffe
cp Makefile.config.example Makefile.config //将Makefile.config.example的内容复制到Makefile.config
//因为make指令只能make   Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子
gedit Makefile.config      //打开Makefile.config文件

仔细阅读makefile中的注释语句其实就知道该怎么操作了,为了方便理解,笔者还是介绍一各个配置说明。
在打开的Makefile.config修改如下内容:

//如果你不使用GPU的话,就将
# CPU_ONLY := 1
修改成:
CPU_ONLY := 1

//若使用cudnn,则将
# USE_CUDNN := 1
修改成:
USE_CUDNN := 1

//若使用的opencv版本是3的,则将
# OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
// 包含此项---此处换做python3.5的也不行
PYTHON_INCLUDE := /usr/include/python2.7/usr/lib/python2.7/dist-packages/numpy/core/include

 //若要使用python来编写layer,则需要将
# WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

//重要的一项# Whatever else you find you need goes here.下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
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 /usr/lib/x86_64-linux-gnu/hdf5/serial
//这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径

4、为hdf5之类的文件创建新的链接

\\首先执行下面两句话:
find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;

cd /usr/lib/x86_64-linux-gnu

\\然后根据情况执行下面两句:
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
\\注意:这里的10.1.010.0.2根据不同的系统可能对应的数字会不同,比如在ubuntu15.10中其数字就是8.0.2.
\\具体的数字可以在打开的文件中查看对应文件后面跟的数字

5、执行python文件夹下的指令

\\现在将目录cd到你之前git的caffe文件夹下:

cd python

for req in $(cat requirements.txt); do pip install $req; done

\\如果发现执行上述代码后,终端中有很多红字,一堆的错误之类的,那不管是什么错误都执行下面一句话:
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done
\\执行完上面这句话后应该就不会有很多红字错误了

###主要错误:

报错1、TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

2、Command "python setup.py egg_info" failed with error code 1

解决1:

配置文件中设置源

步骤

  • 创建~/.pip/目录(如果存在则不需要)
  • 创建~/.pip/pip.conf文件,并修改文件内容如下(示例修改为豆瓣源)
[global]
timeout=40
index-url= http://pypi.douban.com/simple/
[install]
trusted-host=pypi.douban.com

解决2:
sudo python -m pip install --upgrade --force pip

6、make 各种文件

cd ..   \\此时位置应该处于caffe文件夹下

sudo make all -j8  //j8代表计算机cpu有8个核,因此可以多线程一起make,这样make的速度会快很多。一般常用的还有j4

sudo make test -j8

sudo make runtest -j8  

sudo make pycaffe   //如果以后用python来开发的话必须执行这一句,一般不管你是否用python,都会执行这一句

sudo make distribute

//运行这一步报错
sudo make runtest -j8
 
 

/usr/bin/ld: 找不到 -lopencv_dep_cudart 的问题


两种解决办法:

1 在cmake的时候:~/你的路径/$ cmake -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF

2在CMakeList.txt中添加:set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)

在find_package(OpenCV REQUIRED)之前添加

至此,完成了caffe的安装。

测试:新打开一个终端,输入python,可以看到此时为python2.7版本,输入import caffe无报错。

##############################################################################

简化版安装:

git clone https://github.com/BVLC/caffe.git    //从github上git caffe
cd caffe    //打开到刚刚git下来的caffe
cp Makefile.config.example Makefile.config //将Makefile.config.example的内容复制到Makefile.config
//因为make指令只能make   Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子
gedit Makefile.config      //打开Makefile.config文件
在打开的Makefile.config修改如下内容:
//如果你不使用GPU的话,就将
# CPU_ONLY := 1
修改成:
CPU_ONLY := 1

//若使用cudnn,则将
# USE_CUDNN := 1
修改成:
USE_CUDNN := 1

//若使用的opencv版本是3的,则将
# OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
// 包含此项---此处换做python3.5的也不行
PYTHON_INCLUDE := /usr/include/python2.7/usr/lib/python2.7/dist-packages/numpy/core/include

 //若要使用python来编写layer,则需要将
# WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

//重要的一项# Whatever else you find you need goes here.下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
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 /usr/lib/x86_64-linux-gnu/hdf5/serial
//这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径

make 各种文件

cd ..   \\此时位置应该处于caffe文件夹下
make all  

make test 

这种安装方式需要额外编译python接口:

打开的Makefile.config修改如下内容:

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

然后

cd python
for req in $(cat requirements.txt); do pip install $req; done

编译

make pycaffe 

 使Caffe的python接口永久生效:

添加环境变量
vim ~/.bashrc
export PYTHONPATH=/home/qf/git/caffe/python:$PYTHONPATH添加到文件中。
source ~/.bashrc 使更改生效。
这样,在其他地方打开python,也可以import caffe了。


猜你喜欢

转载自blog.csdn.net/qq_38096703/article/details/79656337
今日推荐