zoukankan      html  css  js  c++  java
  • 新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/ 目录下..

  • 相关阅读:
    WEEK
    更新yum源
    Centos6.9安装Mysql5.7.18
    gitlab使用
    gitlab安装
    git客户端
    服务器端配置
    错误问题
    服务器端
    01找出数组中重复的数
  • 原文地址:https://www.cnblogs.com/jbw752746541/p/10593860.html
Copyright © 2011-2022 走看看