在Mac上安装Google Protocol Buffers
我想使用terminal命令行在mac上安装旧版本的Google Protocol Buffers(protobuf-2.4.1)。 我尝试了brew install protobuf
,但已经安装了最新版本2.5.0。 是否有可能从terminal安装旧版本。
谢谢
在Mac上build立protobuf 2.4.1有一些问题。 还有一个补丁也必须应用。 所有这些都包含在自制的protobuf241公式,所以我build议使用它。
要安装协议缓冲区版本2.4.1,请在terminal中input以下内容:
brew tap homebrew/versions brew install protobuf241
如果您已经有一个协议缓冲区版本,您尝试从源代码安装,您可以键入以下内容到terminal,以覆盖自制软件版本的源代码:
brew link --force --overwrite protobuf241
通过input以下内容检查您是否安装了正确的版本:
protoc --version
它应该显示2.4.1
这不是通过酿造,但最终的结果是一样的。
- 从https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz下载protobuf-2.4.1
- 解压缩tar.gz文件。
- $ cd〜/ Downloads / protobuf-2.4.1
- $。/configuration
- $化妆
- $ make check
- $ sudo make install
- $哪个protoc
- $ protoc –version
步骤4-7来自protobuf tarball的README.txt文件。
这是一个新的一年,Homebrew中的protobuf
和前沿版本之间有一个新的不匹配。 截至2016年2月, brew install protobuf
会给你2.6.1版本。
如果您想要3.0 beta版本,您可以将其安装在:
brew install --devel protobuf
由于某种原因,我需要在OS X El Capitan的项目中使用protobuf 2.4.1。 然而,自制软件已经从其配方中删除了protobuf241。 我根据@ kksensei的答案手动安装它,并且必须在此过程中修复一些错误。
在make过程中,我得到3个错误,如下所示:
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; ^
我用了macports
sudo port install protobuf-cpp
从https://github.com/paulirish/homebrew-versions-1 。 为我工作!
brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
brew install --devel protobuf
如果它告诉你“protobuf-2.6.1已经安装”:1. brew uninstall --devel protobuf
2. brew link libtool
3. brew install --devel protobuf
FWIW。,brew的最新版本是protobuf 3.0,不包含旧版本的任何公式。 这有点“不方便”。
虽然protobuf可能在线程级兼容,但在生成的java类级别上绝对不兼容:不能使用protoc 2.4与protobuf-2.5 JAR等生成的.class文件。这就是为什么更新protobuf版本在Hadoop堆栈中是如此敏感的话题:它总是需要跨越不同的项目进行协调,并且足够的创伤,没有人喜欢这样做。