新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

按 键盘 键进行插入或修改

所以这个时候有两种操作方式

第一种:将 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/ 目录下..

 

posted @ 2019-03-26 15:43  不够自律的人  阅读(1097)  评论(0编辑  收藏  举报