新Mac电脑中安装Protobuf出现的各种问题汇总..
因为之前公司的电脑,安装的一切顺利,可能是一些配置环境都配置的非常完善,所以踩到了少许的坑..结果换了新的Mac电脑的时候,由于许多环境不匹配,然后一些终端命令不能被识别..捯饬了两天,总算是把这个坑给踩过去了...很有成就感...!!!
首先,Mac在GitHub上下载的包是以 tar.gz 结尾的..如图这个时候解压出来..
cd 你的protopuf路径
问题一:当我输入./autogen.sh的时候, 显示成了这样
Google Mock not present. Fetching gmock-1.7.0 from the web...
这个意思就是,要去google官网去下载gmock-1.7.0..因为国内需要FQ,所以会一直下载超时..
我们要vim ./autogen.sh 界面如图
按下键盘 E 键
进入编辑模式:
找到:
if test ! -e gmock; then echo "Google Mock not present. Fetching gmock-1.7.0 from the web..." curl -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip unzip -q gmock-1.7.0.zip rm gmock-1.7.0.zip mv gmock-1.7.0 gmock fi
按 键盘 i 键进行插入或修改
所以这个时候有两种操作方式
第一种:将 curl -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip 里面的内容替换为 https://github.com/paulsapps/gmock-1.7.0/archive/master.zip
这个时候要注意你的压缩包 下载完成后 的名字..
我下载后的名字叫做
所以命令里对应的名字也要改成对应的
if test ! -e gmock; then echo "Google Mock not present. Fetching gmock-1.7.0 from the web..." curl -O https://github.com/paulsapps/gmock-1.7.0/archive/master.zip unzip -q gmock-1.7.0-master.zip rm gmock-1.7.0-master.zip mv gmock-1.7.0-master gmock fi
这个时候按一下 ESC退出编辑模式.. :w 保存 :q 退出
重新./autogen.sh 进行下载即可..
第二种:是我直接实现的方式..我这里是直接将压缩文件压缩完成将他命名为 gmock 并直接放入 protobuf目录下..
这个时候 还是要 vim autogen.sh 进入编辑模式 (更多vim命令参考 : https://www.cnblogs.com/fanxiaocong/p/7070130.html)
插入将
if test ! -e gmock; then echo "Google Mock not present. Fetching gmock-1.7.0 from the web..." curl -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip unzip -q gmock-1.7.0.zip rm gmock-1.7.0.zip mv gmock-1.7.0 gmock fi
注释掉 (# 号注释)
如图:
ESC 退出编辑 :w 保存 :q 退出
问题二:当我再次输入 ./autogen.sh 的时候报了这个错误
这个是因为 automake 没有安装..
https://www.jianshu.com/p/d5bf5a5a3436 这个是安装的命令..
于是..就进行一系列的安装命令..
目录不变
sudo curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz tar xzf autoconf-latest.tar.gz cd autoconf-latest (这里有一个小插曲) sudo ./configure --prefix=/usr/local/autotools-bin sudo make
sudo make install export PATH=$PATH:/usr/local/autotools-bin/bin
小插曲是,你cd的这个路径是你文件名,不知道怎么找的可以 : cmd + 空格 autoconf-latest.tar.gz
打开后,在上一层显示 就能找到你的文件了 我的名字是叫:autoconf-2.69..按照自己文件名来..
继续安装:
sudo curl -OL http://ftpmirror.gnu.org/automake/automake-1.15.tar.gz sudo tar xzf automake-1.15.tar.gz cd automake-1.15 sudo ./configure --prefix=/usr/local/autotools-bin sudo sudo make sudo make install
最后一步安装:
sudo curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz sudo tar xzf libtool-2.4.6.tar.gz cd libtool-2.4.6 sudo ./configure --prefix=/usr/local/autotools-bin sudo make sudo make install
漫长的安装功夫没有白费:
这个时候就再次输入 ./autogen.sh
就会开始 一步步的执行了,是我想要的结果
问题三:只要没能安装完成gmock文件,或者 ./autogen.sh没有顺利执行完成..就会出现
所以 关键的配置一定要完成
成功之后:
在就开始安装 protobuf 啦..(记得将protobuf放入到系统文件中..我是/usr/local/中的)
make
make check
make install (记得在/usr/local 下添加 lib空文件)
问题四:当我编译3.0.0的时候,出现了一个 OSAtomicCompareAndSwap64Barrier 的错误,而且11个错误 都是基于 OSAtomic
后来在GitHub找问题源,发现是因为 OSAtomic* OS X includes deprecated in 10.12 (OSAtomic* OS X在10.12中被弃用)
然后有大神解决的该问题
在终端输入: make clean
clean 之后再终端输入 : ./configure CPPFLAGS="-Wno-deprecated-declarations"
这里贴出链接 : https://github.com/protocolbuffers/protobuf/issues/2207
还有一种方式 是修改 src/google/protobuf/stubs/atomicops.h 文件 和 src/google/protobuf/stubs/atomicops_internals_generic_c11_atomic.h 文件 (这个我试着去尝试修复过,但是效果自己没有看到)
链接如下 : https://github.com/protocolbuffers/protobuf/issues/2207
如果以上方式都不成功,请移步 https://github.com/protocolbuffers/protobuf/releases 下载历史版本最新的压缩包
成功截图:
问题五:在我使用protobuf 3.5.0 的时候,终端输入 /usr/local/bin/protoc 会直接生成对应的编译提示如下图:
应该是3.0.0的时候,这样输入是不支持的,如图:
所以当时我还以为自己没有安装成功,又去重新安装了一遍...还是不行..最后通过一个博客
https://www.jianshu.com/p/4198f19fe001
于是 重新 输入一下/usr/local/bin/protoc --help
啊是我想要的结果...就是这个味..这个时候就可以编译了...
这个时候,需要进入需要对你的 .proto 文件进行编译,这个自行书写...
一: 终端中 cd 你要编译的.proto 文件夹 文件夹 文件夹 注意 是文件夹!!
二:终端输入 /usr/local/bin/protoc --csharp_out=./ ./你要编译的.proto (仅供参考,注意 ./(这里要有空格)./ )
三:输入ls就可以找到对应的 .cs文件
完成.....
或者通过..下载mac版本 直接将 protoc 复制到 /usr/local/bin/ 目录下..