protobuf 的安装
protobuf-master使用源码编译的时候报错,在make check 的时
候有两项编译不成功
使用prtobuf-2.6.1安装
tar -zvxf protobuf-2.6.1.tar.gz
apt-get install build-essential
cd protobuf-2.6.1/
./configure
make
make check
sud make install
检查安装是否成功
protoc –version
安装成功出现 libprotoc 2.6.1
可能会出现如下错误:
protoc: error while loading shared libraries: libprotoc.so.9: cannot open shared object file: No such file or directory
这是因为protobuf 的默认安装路径是 /usr/local/lib ,但是 /usr/local/lib 不在ubuntu的默认 LD_LIBRARY_PATH中
解决方法是在 /etc/ld.so.conf.d/目录下创建一个 xx.conf文件,输入/usr/local/lib
输入sudo ldconfig
/etc/ld.so.conf.d/目录下文件的作用:
程序运行时,加载动态库的几种方法
- 通过ldconfig命令。用途是在默认搜寻目录 /lib 和 /usr/lib,以及动态配置文件 /etc/ld.so/conf内所列的目录下,搜寻出可共享的动态链接库(格式如 lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件,缓存文件默认为 /etc/ld.so.cache ,此文件保存以排好序的动态链接库名字
- 通过LD_LIBRARY_PATH 环境变量。可以通过在 .bashrc中配置环境变量,LD_LIBRARY_PATH是告诉loader哪里可以找到共享库,例如 export LD_LIBRARY_PATH = $LD_BRARY_PATH:/usr/local/lib
- 通过编译选项 -WI ,-rpath 指定动态搜索的路径。-WI 告诉编译器将后面的参数传递给链接器。
cudnn 5.1安装
share cudnn.so : no such file or directory解决
原因是 cudnn.so文件不在系统的 lib 路径里,cudnn的路径为 /usr/local/cuda-8.0/lib64 下,将其软链接或者复制道 /usr/local/lib文件夹下,之后ldconfig
查看cudnn版本 查看cuda 版本
cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
源码安装tensorflow
根据官网的指示步骤安装
./configure 是软件的组态设置文件,产生对应平台的 Makefile
make 是根据 Makefile 的内容,编译出符合平台的可执行文件
make install 安装编译成功的软件
make clean 清除编译成功的 obj 和 binary
make check 在make 执行完之后检查 make 生成的库是否正确
在 ./configure 之后报错
you provided a non dictionary to the pkg_tar files
attribute. This attribute was renamed to srcs
. Consider renaming it in your BUILD file.
修改 BUILD 文件中的 files 后依旧报错
改用下载 tensorflwo.whl文件
下载地址是 https://storage.googleapis.com/tensorflow/
这是一个xml文件,在里面找到自己需要的版本后下载
whl文件本质是一个压缩包,里面包含了py文件,以及经过编译的pyd文件。使得可以在不具备编译环境的情况下,选择合适自己的python环境进行安装。
出现错误:Couldn’t open CUDA library libcupti.so.8.0.
这是因为tensorflow版本默认寻找cupti的路径不同,通过寻找 libcupti.so.8.0 的路径并将其加入到LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/extras/CUPTI/lib64
LD_LIBRARY_PATH 是ubuntu的环境变量名,用于查找共享库(动态链接库)时,除了默认的路径之外的其他路径。