首先到release页面下载cpp的release:
https://github.com/protocolbuffers/protobuf/releasesgithub.com
比如这种:
你可以手动下载后解压,或者:
1 | wget https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protobuf-cpp-3.14.0.tar.gz |
检查依赖文件是否齐全:
1 | autoreconf -f -i |
否则后续make可能会出现这样的问题:
正常的流程是:
1 | ./configure --prefix=/usr/local/ |
但是由于我们没有sudo权限,一方面不能使用bash运行configure,一方面无法写/usr/local/,所以这两个地方都需要做修改:
在./configure前面加上sh,后面的路径换成自己有权限的路径:
1 | sh ./configure --prefix=替换成一个你拥有权限的目录 |
然后是:
1 | make |
即可等待安装完成,其中make和make check耗时较长,如果不愿意等,可以跳过make check 过程。
考虑到我们是在自己指定的目录下安装的,可能该目录没有被添加到本用户的环境变量下,因此可以:
1 | vim ~/.bash_profile |
然后把目录路径添加到PATH的最后面:
当初我弄到这里以为大功告成了,其实后面还有一大堆坑等着我,如果你写了一个protobuf的测试程序用原生g++进行编译,还会遇到大量的问题。
简单的说,你最好把protobuf手动添加到g++寻找头文件的路径、寻找动态、静态链接库的路径,否则后续编译可能会出很多奇怪的问题。当然你也可以在编译时使用-I、-L的命令,也许可以不用设置这些东西:
(这些也是在~/.bash_profile文件中设置的)
1 | # 环境变量,中间用冒号隔开 |
最后再重新生效一下即可:
1 | source ~/.bash_profile |
BTW,如果后续编译出现google::protobuf::之类undefined的问题,请务必再编译时添加
1 | -lprotobuf -lpthread |
两个参数,比如我的Makefile是这样的:
1 | # proto测试 |
本文地址: https://www.chimaoshu.top/CentOS下无sudo安装protobuf的过程/
版权声明:本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议,转载请注明出处。