thrift Mac下安装教程
一:安装最新版(自动安装)
最简单的是用homebrew进行安装
-
安装homebrew 在终端输入ruby -e "$(curl -fsSL?https://raw.github.com/Homebrew/homebrew/go/install)"
- 安装thrift ? brew install thrift
用brew安装的thrift版本是0.9的,but,我们项目中得thrift版本是0.8的,所以果断卸载掉。
?brew uninstall thrift。转到下面第二种方法安装thrift
二:手动安装0.8.0
先安装依赖。
http://www.jattcode.com/installing-autoconf-automake-libtool-on-mac-osx-mountain-lion/
- 安装BOOST
命令:./bootstrap.sh,该命令用于生成bjam可执行文件,这个东西就是用来编译boost库
命令:sudo?./b2 threading=multi address-model=64 variant=release stage install?
-
安装 libevent
命令:./configure --prefix=/usr/local
命令:make
命令:sudo make install?
-
安装 Apache Thrift
编译命令:./configure --prefix=/usr/local/ --with-boost=/usr/local/lib --with-libevent=/usr/local/lib --without-ruby --without-python --without-perl --without-php
有一些不相关的code genorater可以不要了,不然又得会报错。。。
安装命令:sudo make install
thrift -version 可以查看安装是否成功和版本
安装8的时候会遇到如下问题,并按如下解决:
Osx 10.9 是比较新的系统, 从这个版本开始, 系统默认编译器从GCC?改为 Clang(GCC -v 一下, 给的是clang 的提示).?
Thrift 0.8 ?代码相对又比较老, 在新的编译器上遇到了下列一些问题.
问题1 :
? 多个源码文件报错 # include <tr1/functional>, file not found, 改为?# include <boost/tr1/functional.hpp> 解决.
? 需要修改以下文件:
- lib/cpp/src/concurrency/ThreadManager.h ?line:24
- lib/cpp/src/async/TAsyncChannel.h line:23
- lib/cpp/src/async/TAsyncChannel.cpp line:21
- lib/cpp/src/async/TAsyncProcessor.h line:23
- lib/cpp/src/async/TAsyncBufferProcessor.h line:23
?原因: ?在我试验的环境下, 此头文件有后缀名/usr/local/include/boost/?tr1/functional.hpp
问题2:
? cpp 测试代码 test/Benchmark.cpp 编译失败, ?shared_ptr ?ambigous , 用 boost::shared_ptr 替换?shared_ptr,
? 错误消失.
? 原因: Clang 支持 C++ 11, 其 标准库自带?shared_ptr(std::shared_ptr, 参考?http://zh.cppreference.com/w/cpp/memory/shared_ptr)?
?故需显式指定名字空间.
?三:测试
下面编写一个HelloWorld.thrift 来测试一下,内容如下:
namespace java com.xx.mobile.hotel.sc.demo
service HelloWorldService {
? ? ?string sayHello(1:string username)
}
执行:thrift -gen java HelloWorld.thrift?将在同级目录下生成gen-java/com/xx/mobile/hotel/sc/demo/HelloWorldService.java文件。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。