根据官网的教程,thrift安装步骤还是很简单的。但是在安装过程中可能遇到很多问题,目前遇到过的在此总结一下。
1.GCC版本问题
thrift是用C++编写的框架,在编译过程中可能发生错误,原因是没有GLIBCXX_3.4.15版本,或是更高的版本:
../../compiler/cpp/thrift: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ../../c
我们看到当前GCC版本中的确没有GLIBCXX_3.4.15。
[root@localhost ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
下载新版本
32位系统:
http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb
64位系统:
http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb解压并安装
解压后会发现当前目录下多了一个usr目录,将里面的libstdc++.so.6.0.17拷贝到系统的库文件中,最后重新建立起软连接。可以再次查看libstdc++.so.6的内容,发现里面已经有GLIBCXX_3.4.15这个版本了。于是就可以继续编译thrift咯。
[root@localhost ~]# ar -x libstdc++6_4.7.2-5_amd64.deb && tar xvf data.tar.gz
[root@localhost ~]# cd /usr/lib/x86_64-linux-gnu
[root@localhost x86_64-linux-gnu]# cp libstdc++.so.6.0.17 /usr/lib64
[root@localhost x86_64-linux-gnu]# cd /usr/lib64
[root@localhost lib64]# rm libstdc++.so.6
[root@localhost lib64]# ln libstdc++.so.6.0.17 libstdc++.so.6
2.缺少头文件
在编译文件过程中,曾遇到过大量缺少头文件的情况:
Error: lua.h file not found
Error: Python.h file not found
如果并不需要上述语言的支持,可以简单地不安装这部分内容。
[user@host thrift-0.9.2]$ ./configure --without-lua
如果需要相应的语言支持,这类问题通常是因系统中并没有相应的头文件。可以打开/usr/include这个文件夹自行检查一下是否有上述头文件,如果有的话,则是版本问题。当没有头文件时,如下安装相应的开发平台即可:
[user@host thrift-0.9.2]$ sudo yum install python-devel
3.环境配置
安装thrift还需要很多环境配置。比如我所安装的thrift-0.9.2就要求系统中的bison版本必须在2.5或以上。这一点如果你本地缺少必要的环境支持,当你执行./configure时就会看到无法通过。你可以使用yum、wget、apt-get等命令获取相应的软件包。安装环境的具体需求可以参见Thrift官方安装手册(译)。