您的位置:首页 > 其它

Thrift0.8.0安装常见问题

2016-06-30 22:48 211 查看
项目要求thrift的版本为0.8.0,这是一个老版本,所以我们不能使用包管理器(例如brew)来进行安装了。

我们必须采用源码安装。

源码安装需要配置、编译、链接的过程,会有一些依赖条件,所以在编译之前我们首先要解决依赖关系。

需要安装的依赖如下:

安装boost库

(1).下载地址:http://www.boost.org/

(2). 先执行命令:./bootstrap.sh (该命令用于 )。 生成bjam可执行文件,这个东西就是用来编译boost库

(3). 再执行命令:sudo ./b2 threading=multi address-model=64 variant=release stage install 进行安装。

因为boost库比较大,编译的时间非常长,所以请大家耐心等待。

安装libevent库

(1).使用brew安装libevent, 执行命令: brew install libevent 。

在此处遇到问题:brew Could not symlink, /usr/local/include is not writable

解决方法:  ,然后重新执行创建链接的命令 , sudo chown -R `whoami`:admin /usr/local/include

按照terminal中的提示retry : brew link [名称]即可。

出错原因: 安装程序对于/usr/local/include文件夹没有写权限,在安装程序尝试向该目录创建文件

链接时会出错,所以我们需要手动赋予用户对于该路径的写权限。

源码安装thrift

(1).源代码下载地址: 注意下载的版本 0.8.0,  http://thrift.apache.org/

也可以尝试 这个链接直接下载。 thrift-0.8.0.tar.gz

(2).解压文件,执行编译命令:./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local

在这个过程中可能会出现一系列问题:

a. <openssl/err.h> 文件没有找到

问题原因:openssl库安装有问题,可能没有安装openssl,这个时候安装即可,

如果已经安装了openssl那么错误原因是因为:仅仅在用户目录安装了 openssl ,

没有将相应的文件链接添加到系统目录中,导致其他代码文件在饮用openssl中的

一些头文件时,出现了找不到的错误

解决方法:

首先执行 :brew install openssl ,如果openssl包已安装会提示,否则会进行安装

然后执行 :brew link --force openssl, 创建链接。

b.

多个源码文件报错 # 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

c.

cpp 测试代码 test/Benchmark.cpp 编译失败, shared_ptr ambigous , 用 boost::shared_ptr 替换 shared_ptr,

解决方法:vim /Users/chenhailong/Documents/chl/mytools/thrift-0.8.0/lib/cpp/test/Benchmark.cpp

全局替换shared_ptr为boost::shared_ptr。然后重新make install即可。

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

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

到这,thrift安装我所遇到的问题都已经解决掉了,执行thrift -version命令显示出相应版本号为: 0.8.0

如果大家还遇到过其它的问题,欢迎添加。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thrift