我想使用终端命令行在Mac上安装旧版本的Google协议缓冲区(protobuf-2.4.1)。我尝试使用brew install protobuf
,但是已安装了最新版本2.5.0。是否可以从终端安装旧版本。
谢谢
我想使用终端命令行在Mac上安装旧版本的Google协议缓冲区(protobuf-2.4.1)。我尝试使用brew install protobuf
,但是已安装了最新版本2.5.0。是否可以从终端安装旧版本。
谢谢
Answers:
在Mac上从源代码构建protobuf 2.4.1存在一些问题。还有一个补丁也必须应用。所有这些都包含在自制的protobuf241公式中,所以我建议您使用它。
要安装协议缓冲区版本2.4.1,请在终端中输入以下内容:
brew tap homebrew/versions
brew install protobuf241
如果已经有尝试从源代码安装的协议缓冲区版本,则可以在终端中键入以下内容,以使源代码被自制版本覆盖:
brew link --force --overwrite protobuf241
键入以下命令,检查是否已安装正确的版本:
protoc --version
它应该显示2.4.1
Warning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
这不是通过冲泡,但最终结果是相同的。
步骤4-7来自protobuf压缩包的README.txt文件。
/protobuf/src/README.md
,我希望它README.md
在/protobuf
目录中
如果您登陆此处寻找如何在Mac上安装协议缓冲区,则可以使用Homebrew通过运行以下命令来完成
brew install protobuf
它会安装最新版本的protobuf。对我来说,在撰写本文时,它安装了v3.7.1
如果您想安装旧版本,请从“ Protobuf软件包-Homebrew”的软件包页面中查找可用的版本。然后安装该软件包的特定版本。
此软件包中可用的最早的protobuf版本是v3.6.1.3
来自https://github.com/paulirish/homebrew-versions-1。为我工作!
brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
由于某些原因,我需要在OS X El Capitan的项目中使用protobuf 2.4.1。但是,自制酒已从其配方中删除了protobuf241。我会根据@kksensei的答案手动安装它,并且必须在此过程中修复一些错误。
在制作过程中,出现以下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;
^
(对不起,当代码包含“`”时,我不知道如何附加代码)
如果您遇到相同的错误,请编辑src / google / protobuf / message.cc,#include <istream>
在文件顶部添加并$ make
再次执行,并且不会出现任何错误。之后做$ sudo make install
。安装完成后$protoc --version
应显示正确的结果。
我用过Macports
sudo port install protobuf-cpp
brew install --devel protobuf
如果它告诉您“ protobuf-2.6.1已经安装”:1. brew uninstall --devel protobuf
2. brew link libtool
3。brew install --devel protobuf
根据您的操作系统下载zip文件(例如:protoc-3.7.0-osx-x86_64.zip)。这也适用于其他操作系统。
将protoc-3 / bin / protoc中的可执行文件移动到PATH中的目录之一。在Mac中,我建议将其放入/ usr / local / bin
(可选)还有一个包含文件,您可以添加。这是README.md的摘录
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还有另一种官方方式。
尝试之前,请先完整阅读。
步骤如下:
打开终端并输入以下内容
PROTOC_ZIP=protoc-3.7.1-osx-x86_64.zip
curl -OL https://github.com/google/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
rm -f $PROTOC_ZIP
为我工作。
PS
这仅适用于osx中的3.7.1版本。如果您要安装其他版本/平台,请访问发布链接并查看最新版本的详细信息,然后使用这些信息。
参考
您可以从Google http://google.github.io/proto-lens/installing-protoc.html提供的官方链接页面安装
对于v3用户。
http://google.github.io/proto-lens/installing-protoc.html
PROTOC_ZIP=protoc-3.7.1-osx-x86_64.zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm -f $PROTOC_ZIP
HomeBrew版本已删除,配方已清空。因此,我的建议是按照以下步骤手动安装它。
目前,您将需要手动构建和安装Protocol Buffers工具集。
下载源代码:https : //github.com/google/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz
tar xvfz protobuf-2.4.1.tar.gz
cd protobuf-2.4.1
跑 ./configure
修改src / google / protobuf / message.cc,在文件顶部添加#include
make
从文件夹的根目录运行命令,即protobuf-2.4.1 /
跑 sudo make install
运行/usr/local/bin/protoc --version
以检查protobuf编译器的版本终端输出应为:
Version: libprotoc 2.4.1
.pb.h
和.pb.cc
文件,它们就向后兼容。