ubuntu安装指定版本protobuf,无configure,makefile文件报错
1.查看protobuf版本
# protoc --version
2.安装指定版本protobuf
前提: 确保一下几个库都有安装
# sudo apt-get install autoconf automake libtool curl make g++ unzip
在此以安装protobuf3.6版本为例
# git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
//安装哪个版本,v后面直接修改即可
# cd protobuf
# git submodule update --init --recursive
// 该命令表示克隆protobuf的子模块,主要是gtest
//没有反应,没问题继续进行
编译protobuf源码,并进行安装
// 进入到克隆的protobuf目录
# cd protobuf
# ./autogen.sh
# ./configure --help//查看默认安装路径如下图所示,路径显示为/usr/local,则可以采用默认安装
# ./configure
# make
// 如果没有克隆子模块,make check会失败但是可以继续make install,但是使用某些功能时可能会出错
# make check
# sudo make install
# sudo ldconfig
// 输出protobuf版本信息则表示安装成功
# protoc --version
3.报错无configure和makefile文件等等,比如安装protobuf3.0版本
生成configure和makefile文件
# cd protobuf
# aclocal
# autoconf
# autoheader
# automake --add-missing
# ./configure --help//查看默认安装路径,若路径显示为/usr/local,则可以采用默认安装
# ./configure
# make
# sudo make install
./configure一定要查看路径,因为ros自带protobuf2路径是在/usr/include下,如果不加路径的话,则会默认安装到/usr/include下,那个google文件就是了。这个结果则会导致protobuf2和protobuf3冲突,在编译cartographer文件的时候报错!!!
若路径显示为/usr,则需要改变默认路径
./configure --prefix=/usr/local
继续上述步骤,make ,sudo make install
若有报错出现configure.ac:*: error: required file ‘autoconf/ltmain.sh’ not found
安装libtools
# sudo apt install libtool
执行
# libtoolize --automake --copy --debug --force
若有报错出现config.status: error: cannot find input file: `Makefile.in’
# aclocal
# libtoolize –automake
# automake --add-missing
# ./configure
# make
# sudo make install
4.检查protobuf版本
# protoc --version
参考链接
参考链接:自动生成configure和makefile
参考链接:Ubuntu18.04同时安装两个版本的protobuf