iOS中ProtocolBuffer2.2的安装及google/protobuf/message.cc:130:60错误解决办法

来源:互联网 发布:nginx 实用技巧 编辑:程序博客网 时间:2024/05/13 14:14

安装ProtocolBuffer2.2过程:

需要安装autoconf 和automake 安装过程如下:

在终端中输入:

curl -O http://mirrors.kernel.org/gnu/m4/m4-latest.tar.gz
tar -xzvf m4-latest.tar.gz
cd m4-latestcd
./configure -prefix=/usr/local
make
sudo make install

cd ..

curl -O http://mirrors.kernel.org/gnu/autoconf/autoconf-2.65.tar.gz
tar -xzvf autoconf-2.65.tar.gz
cd autoconf-2.65
./configure -prefix=/usr/local
make
sudo make install
cd ..
curl -O http://mirrors.kernel.org/gnu/automake/automake-1.11.tar.gz
tar xzvf automake-1.11.tar.gz
cd automake-1.11
./configure -prefix=/usr/local
make
sudo make install
cd ..
curl -O http://mirrors.kernel.org/gnu/libtool/libtool-2.2.6b.tar.gz
tar xzvf libtool-2.2.6b.tar.gz
cd libtool-2.2.6b
./configure -prefix=/usr/local
make

sudo make install

--------------------------------------------------


ProtocolBuffers-2.2.0-Source-3.tar解压

终端进入  进入该目录

执行

./configure --prefix=/usr/local

make

sudo make install

protoc --version


git clone https://github.com/qzix/protobuf-objc

默认会在当前运行目录下创建protobuf-objc目录。

进入该目录,并执行:

./autogen.sh

./configure -prefix=/usr/local

make

sudo make install

----------------------------------------------

遇到的问题:

1、在执行 ./autogen.sh时出现错误: /autogen.sh: line 10: autoreconf: command not found 

解决办法:需要安装automake和autoconf

---------------------------------------------

2、make的时候出现错误:

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之上的一行,加入 

#include <istream>

继续运行make ,即成功通过。

----------------------------------------

2016.3.31更新

git clone https://github.com/qzix/protobuf-objc

以前的github地址失效了


0 0