4

升级到 OS X Mavericks 后,make在我的 Mesos 构建目录中运行会导致错误:

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;

我从一个干净的构建目录开始,重新运行./bootstrap,然后运行cd build && ../configure

4

2 回答 2

18

对于那些在谷歌搜索依赖于旧版本谷歌protobuf库的其他软件抛出的错误消息时找到此页面的人,这里是另一种解决方案:

修改文件src/google/protobuf/message.cc并在打开的注释块之后添加该行#include <iostream>,就在所有其余#include行之前。这一行更改足以让我在 El Capitan Mac 上使用 XCode 7.3 中的命令行工具进行protoc编译protobuf-2.4.1

于 2016-04-26T09:18:42.587 回答
9

OS X Mavericks用clanggcc替换了命令:

$ gcc
clang: error: no input files

但是,Mesos 目前希望使用 GNU Compiler Collection 进行编译。您需要使用 Homebrew 安装 GCC 4.7 并配置您的构建目录以使用它。可以肯定的是,从一个空的构建目录开始:

# Install GCC 4.7
brew tap homebrew/versions
brew install gcc47

# Configure Mesos build to use GCC
cd /path/to/mesos
rm -rf build
mkdir build
cd build
CC=gcc-4.7 CXX=g++-4.7 ../configure

然后你可以make像以前一样运行。

于 2013-11-01T02:18:57.070 回答