zoukankan      html  css  js  c++  java
  • 在RHEL上安装Thrift(支持C++)的若干问题 » 编码无悔 / Intent & Focused

    在RHEL上安装Thrift(支持C++)的若干问题 » 编码无悔 / Intent & Focused

        [原创]在RHEL上安装Thrift(支持C++)的若干问题
        2010年12月15日 由 learnhard 留言 »

        本文针对的读者:要用Thrift开发C++应用程序的人。

        环境:

        RHEL 5.3(内核2.6.18-128.el5),32位

        gcc 4.1.2

        Boost 1.35.0

        

        (1)什么是Thrift?

        先转一段网上的定义:

        Thrift是一个跨语言服务部署框架,最初由Facebook于2007年开发,后于2008年进入Apache孵化器(Apache Incubator)。

        类似于SOAP,COM 和CORBA,Thrift通过定义一个中间定义语言和Thrift代码生成工具,生成指定语言的代码。目前,Thrift支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml的代码生成。

        简单分析其机理,Thrift就是实现C/S模式,通过代码生成工具将接口定义文件生成服务器端和客户端代码(可以为不同语言),从而实现服务端和客户端跨语言的支持。
        

        (2)从源码安装Thrift的时候,也像通常的软件安装过程一样,通过configure → make → make install 的过程就可以完成。但安装过程比较烦人,我遇到了一个又一个的问题,总的来说还是比较繁琐的,特别记下来:

        

        Thrift在configure的时候提示找不到php-config的话,需要手动指定其路径(如果没装PHP则需安装)。

        PHP 5.3.4安装的过程中,configure的时候出现error,提示找不到libxml2,于是我安装了libxml2-devel-2.6.26-2.1.2.7.i386.rpm。

        你还需要预先安装libevent库,我安装的是libevent-2.0.9-rc版本。

        文章来源:http://www.codelast.com/

        如果你没有安装Boost就执行Thrift的configure,则会看到下面的提示:

        Building C++ Library ......... : no

        

        此时,如果你make,也得不到Thrift的C++库。

        以默认参数安装了Boost之后(我安装的是1.35.0版本),configure的时候就会看到下面的提示:

        Building C++ Library ......... : yes

        

        然后重新开始make。

        文章来源:http://www.codelast.com/

        到了某一步,如果提示下面的错误:

        src/protocol/fastbinary.c:20:20: error: Python.h: No such file or directory

        (中间一堆的错误,此处省略)

        error: command 'gcc' failed with exit status 1

        

        这是怎么回事呢?打开 lib/py/src/protocol/fastbinary.c 文件,看看第一行未注释的代码:

        #include <Python.h>

        说明在系统路径中要能找到Python.h文件,而这个文件,是在你安装了python开发包之后才有的,所以,去安装然后再make吧。

        我安装的包:python-devel-2.4.3-24.el5.i386.rpm

        文章来源:http://www.codelast.com/

        在成功make了之后,可以看到输出的提示:

        Build complete.

        

        然后再make install,就可以在 /usr/local/lib/ 下(依系统不同,目录也不一定是这个)找到Thrift的库文件啦:

        

        -rw-r--r--  1 root root 5762970 Dec 15 17:41 libThrift.a

        -rwxr-xr-x  1 root root     949 Dec 15 17:41 libThrift.la

        -rw-r--r--  1 root root  468526 Dec 15 17:41 libThriftnb.a

        -rwxr-xr-x  1 root root     963 Dec 15 17:41 libThriftnb.la

        lrwxrwxrwx  1 root root      20 Dec 15 17:41 libThriftnb.so -> libThriftnb.so.0.0.0

        lrwxrwxrwx  1 root root      20 Dec 15 17:41 libThriftnb.so.0 -> libThriftnb.so.0.0.0

        -rwxr-xr-x  1 root root  339359 Dec 15 17:41 libThriftnb.so.0.0.0

        lrwxrwxrwx  1 root root      18 Dec 15 17:41 libThrift.so -> libThrift.so.0.0.0

        lrwxrwxrwx  1 root root      18 Dec 15 17:41 libThrift.so.0 -> libThrift.so.0.0.0

        -rwxr-xr-x  1 root root 3308490 Dec 15 17:41 libThrift.so.0.0.0

        -rw-r--r--  1 root root  184672 Dec 15 17:41 libThriftz.a

        -rwxr-xr-x  1 root root     956 Dec 15 17:41 libThriftz.la

        lrwxrwxrwx  1 root root      19 Dec 15 17:41 libThriftz.so -> libThriftz.so.0.0.0

        lrwxrwxrwx  1 root root      19 Dec 15 17:41 libThriftz.so.0 -> libThriftz.so.0.0.0

        -rwxr-xr-x  1 root root  145732 Dec 15 17:41 libThriftz.so.0.0.0

        文章来源:http://www.codelast.com/

        然后就可以开始你的Thrift C++开发之旅了!
  • 相关阅读:
    JDBC
    两道关于回溯法,分支限界法的算法题
    旅行售货员问题
    jdbc学习
    mysql简单练习
    取会邮件客户端中的密码
    触发器的使用
    事务的数据一致性测试
    读取其他软件listview控件的内容
    sqlserver2008 ,只能选C盘目录,不能选其它盘目录
  • 原文地址:https://www.cnblogs.com/lexus/p/3280060.html
Copyright © 2011-2022 走看看