Mac下thrift编译问题[转]

2019-11-03  本文已影响0人  雨中星辰0

最近打算了解一下thrift框架的使用,在mac下,使用命令
brew install thrift

安装thrift。thrift版本为0.11.0,boost版本为1.67(此为一坑)。
安装完成后,参考网上的教程,编写了简单的thrift文件,使用命令

thrift -r --gen cpp ICalc.thrift

编译thrift文件,产生gen-cpp目录,其中有框架生成的cpp文件。
修改相关文件,然后在命令行下使用命令

g++ -g -Wall ICalc.h ICalc.cpp ICalc_constants.h ICalc_constants.cpp ICalc_types.h ICalc_types.cpp ICalc_server.skeleton.cpp

进行编译。
产生编译错误:

/usr/local/include/thrift/stdcxx.h:32:10: fatal error: 'boost/tr1/functional.hpp' file not found
#include <boost/tr1/functional.hpp>

google后(链接在此)发现:boost@1.67版本移除了tr1相关文件,导致编译错误。
解决办法为:安装boost@1.60版本,使用其中的tr1相关文件(此版本还未移除)。

brew install boost@1.60

例如:

g++ -g -Wall -L/usr/local/opt/boost@1.60/lib -I/usr/local/opt/boost@1.60/include/ ICalc.h ICalc.cpp ICalc_constants.h ICalc_constants.cpp ICalc_types.h ICalc_types.cpp ICalc_server.skeleton.cpp

但此时依旧有编译错误:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决办法为:添加参数-std=c++11 -lthrift
最后完整命令为

g++ -std=c++11 -g -Wall -lthrift ICalc.h ICalc.cpp ICalc_constants.h ICalc_constants.cpp ICalc_types.h ICalc_types.cpp ICalc_server.skeleton.cpp

————————————————
原文链接:https://blog.csdn.net/liaozelin_/article/details/80255636

上一篇 下一篇

猜你喜欢

热点阅读