判断有没有安装gcc,命令行输入gcc --version查看版本号
如果没有安装的话,选择xcode->preferences ->Command line tools安装
安装完成后,输入gcc --version,正常情况是能看到版本号的,但是我的又报错了
Configured with: --prefix=/Applications/Xcode5-DP.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
xcrun: Error: could not stat active Xcode path '/Applications/Xcode5-DP.app/Contents/Developer'. (No such file or directory)
这时候我看了下我的应用程序里面,没有 Xcode5-DP,只有Xcode,于是把名改成了Xcode5-DP,再试一试,应该就可以了
wodeMacBook-Pro:~ wenxiaoye1471$ gcc --version
Configured with: --prefix=/Applications/Xcode5-DP.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.76) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
这下终于确定成功安装gcc了
3.安装protocolbuf。cd到刚才下载的目录,输入 ./configure,回车
命令行打印出一堆后,输入
make
make check
make install
make install的时候我这又出错了
Making install in .
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/lib/pkgconfig" || ./install-sh -c -d "/usr/local/lib/pkgconfig"
mkdir: /usr/local/lib/pkgconfig: Permission denied
make[2]: *** [install-pkgconfigDATA] Error 1
make[1]: *** [install-am] Error 2
make: *** [install-recursive] Error 1这是告诉我权限问题,这时需要加上sudo,输入下面的命令:sudo make install
安装完成后,确认下是否成功:protoc --version
提示:libprotoc 2.5.0
表示安装成功,大事终于告一段落
4.下面就是使用protocolbuf了
(1).proto文件路径要有文件名,而--cpp_out路径不能有文件名,只能是路径
例如,.proto当前目录下,想把C++代码也生成到当前目录下,应该如下调用protoc:
protoc xxxx.proto --cpp_out=.
(2).最好是cd到proto文件所在的目录再导出,否则会出现生成出来的文件找不到头文件的问题
protobuf生成C++代码时会在同一个目录下生成两个文件,一个.cc一个.h,生成的.cpp文件会include生成的.h文件,而如果不cd到proto文件所在目录去操作,那就可能会出现.cc文件包含.h文件时路径错误
例如:.proto文件在src目录下,导出代码也导出到src目录下,可能执行如下命令
protoc src/xxxx.proto --cpp_out=.
不出所料,src目录下确实出现了生成的.cc和.h文件,但是一编译,就会报错了
原因是找不到头文件"src/xxxx.pb.h",原来,protobuf把执行命令时proto文件所在目录的路径也加到生成的代码中了。
所以要想避免这个问题,就cd到protobuf所在的目录再去操作。例如上例的解决办法就是
cd src
protoc xxxx.proto --cpp_out=.
这样一来,再编译,就不会有任何问题了参考网址:http://blog.csdn.net/dfqin/article/details/8198341 ( Mac上安装Protocol Buffers)
http://blog.csdn.net/xocoder/article/details/9173947 (mac上使用 Protocol Buffers 编译成.cc和.h文件 )