前言
编译调试项目的过程中涉及到caffe的编译,提示没有安装protobuf的错误,本文详解protobuf的安装;
问题描述
解决步骤
1.查看google protobuf的github,没有直接使用release而是对源码按照readme文件进行了编译;
protobuf需要一些依赖库,需要先进行安装;
$ sudo apt-get install autoconf automake libtool curl make g++ unzip
出现问题
注意,红框中的内容表示当前系统的sources.list中没有该库的源链接(目录在/etc/apt/sources.list),但并不表示当前系统没有安装该库;
不过,博主的当前系统的确是没有安装该库;
2.安装curl依赖库,参考here,不过最后的步骤改为以下命令则可正确安装;
sudo make install
3. 按照protobuf的readme操作运行以下命令出错;
$ ./autogen.sh
错误如下
说明缺少gmock这个依赖库;
4.安装gmock依赖库,可参考here;
5.安装之后按照readme的步骤进行编译即可;
$ ./configure $ make $ make check $ sudo make install $ sudo ldconfig # refresh shared library cache.
注意,依赖库的版本需要与项目需要的版本一致,故注意依赖库的版本;
博主在解决这个问题的过程中编译完成的是当前protobuf的最新版本3.5.1,后来发现项目使用的是2.6.0或者2.6.1版本的;
linux系统安装依赖库的方法
如何安装各种依赖库或者工具包;
1)直接使用apt-get install进行安装,这样能够正确安装的前提是系统中有源链接的文件,在/etc/apt/source.list文件中;
2)直接在github或者官网上找到包的源码,自己按照一定的步骤进行编译,需要注意的问题是版本是否一致;
3)一种是直接在相关网站上找到对应系统的包的release版本,使用sudo dpkg -I filename进行安装,
这个需要注意的是安装的包本身可能需要多个依赖项,需要将全部的依赖项都下载下来进行安装,
同时也需要注意包的版本是否匹配,另外,网站上的依赖包可能会有坏的,需要检查一下是否正确安装依赖项,
不能只查看文件,文件存在不一定正确安装,有可能只是一个空的链接,切记切记!!!!!
另外,我们使用的板子是ARM板子,故选择的包是arm64的,同时系统版本的codename是Xenial的,选择包的版本的时候需要注意。
使用lsb_release -a命令行可以查看系统的版本属性等;
一般含有箭头的文件可能就是某个链接,没有正确安装;
参考
2.依赖库curl的安装1;
3.curl的安装-百度;
完