关于自制软件:在mac上安装Google Protocol Buffers

Installing Google Protocol Buffers on mac

我想使用终端命令行在Mac上安装旧版本的Google协议缓冲区(Protobuf-2.4.1)。我试过使用brew install protobuf,但安装了最新版本的2.5.0。是否可以从终端安装旧版本。

谢谢


在Mac上从源代码构建Protobuf 2.4.1有一些问题。还有一个补丁也必须应用。所有这些都包含在自制的Protobuf241配方中,所以我建议使用它。

要安装协议缓冲区版本2.4.1,请在终端中键入以下内容:

1
2
brew tap homebrew/versions
brew install protobuf241

如果您已经有了一个试图从源代码安装的协议缓冲区版本,则可以在终端中键入以下内容,使源代码被自制版本覆盖:

1
brew link --force --overwrite protobuf241

通过键入以下内容,检查是否安装了正确的版本:

1
protoc --version

应显示2.4.1


这不是通过BREW,但最终结果是相同的。

  • 从https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz下载protobuf-2.4.1
  • 提取tar.gz文件。
  • $cd~/下载/protobuf-2.4.1
  • $ /配置
  • 美元制造
  • 美元支票
  • $sudo安装
  • 哪一个牌子
  • $protoc—版本
  • 步骤4-7来自Protobuf tarball的readme.txt文件。


    这是一个新的一年,国产的protobuf版本和最新的版本之间又出现了新的不匹配。截至2016年2月,brew install protobuf将为您提供2.6.1版。

    如果您想要3.0 beta版本,您可以安装它:

    1
    brew install --devel protobuf

    来自https://github.com/paulirish/homebrew-versions-1。为我工作!

    1
    brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb


    出于某种原因,我需要在我的OS X El Capitan项目中使用Protobuf 2.4.1。然而,自制啤酒已经从配方中去除了protobf241。我是根据@kksensei的答案手动安装的,在安装过程中必须修复一些错误。

    在制作过程中,我得到3个错误,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    google/protobuf/message.cc:130:60: error: implicit instantiation of undefined template 'std::__1::basic_istream<char, std::__1::char_traits<char> >'

      return ParseFromZeroCopyStream(&zero_copy_input) && input->eof();

                                                               ^

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:108:28: note: template is declared here

        class _LIBCPP_TYPE_VIS basic_istream;

                               ^

    google/protobuf/message.cc:135:67: error: implicit instantiation of undefined template 'std::__1::basic_istream<char, std::__1::char_traits<char> >'

      return ParsePartialFromZeroCopyStream(&zero_copy_input) && input->eof();

                                                                      ^

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:108:28: note: template is declared here

        class _LIBCPP_TYPE_VIS basic_istream;

                               ^

    google/protobuf/message.cc:175:16: error: implicit instantiation of undefined template 'std::__1::basic_ostream<char, std::__1::char_traits<char> >'

      return output->good();

                   ^

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:110:28: note: template is declared here

        class _LIBCPP_TYPE_VIS basic_ostream;

                               ^

    (对不起,我不知道当代码包含"`"时如何附加代码)

    如果出现同样的错误,请编辑src/google/protobuf/message.cc,在文件顶部添加#include ,然后再次执行$ make,应该不会出现错误。之后是$ sudo make install。安装完成后,$protoc --version应显示正确的结果。


    我使用了Mac

    1
    sudo port install protobuf-cpp


    1
    brew install --devel protobuf

    如果它告诉您"Protobuf-2.6.1已安装":1。brew uninstall --devel protobuf2。brew link libtool三。brew install --devel protobuf


    fwiw.,最新版本的BREW位于Protobuf 3.0,不包含任何旧版本的公式。这有点"不方便"。

    虽然OrthBuf可以在线级兼容,但它在生成的Java类的级别上绝对不兼容:不能使用PotoCo 2.4生成的.class文件和ToBuff-2.5 jar等。这就是为什么更新原始BuffF版本是Hadoop栈中的一个敏感话题:它总是需要不同的协调。耳鼻喉科的项目,并且是足够的创伤性,没有人喜欢这样做。


    安装协议缓冲区(从今天的v3.7.0版开始)

  • 转到此网站
  • 根据您的操作系统下载zip文件(例如:protoc-3.7.0-osx-x86_64.zip)。这也适用于其他操作系统。

  • 将protoc-3/bin/protoc中的可执行文件移动到路径中的某个目录。在Mac中,我建议将其放入/usr/local/bin

  • 现在你可以走了吗?????

    (可选)还有一个包含文件,您可以添加。这是readme.md的一个片段

    1
    2
    3
    4
    5
    6
    If you intend to use the included well known types then don't forget to
    copy the contents of the 'include' directory somewhere as well, for example
    into '/usr/local/include/'.

    Please refer to our official github site for more installation instructions:
    https://github.com/protocolbuffers/protobuf

    您可以从Google提供的官方链接页面安装http://google.github.io/proto-lens/installing-protoc.html