在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++开发之旅了!

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

  1. 在CentOS或RHEL上安装Nux Dextop仓库

    介绍 Nux Dextop是类似CentOS.RHEL.ScientificLinux的第三方RPM仓库(比如:Ardour,Shutter等等).目前,Nux Dextop对CentOS/RHEL ...

  2. 在Mac OS X 10.9上安装 Thrift 0.9.1

    Thrift 0.9.1 官方文档中对于Mac OS X上的安装描述适合 10.8,但不适用于10.9. Homebrew  macport 默认都不能在 10.9上安装Thrift 0.9.1成功 ...

  3. CentOS 6安装thrift支持erlang开发

    早前,在我的博文thrift多平台安装介绍了如何在debian/ubuntu下面安装thrift,并支持erlang开发的.而在CentOS平台下,并没有成功安装.经过不断摸索,终于成功了,这篇博文就 ...

  4. 理解RHEL上安装oracle的配置参数

    无论安装什么版本的oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究 ...

  5. 理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login

    无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究 ...

  6. 在 CentOS 和 RHEL 上安装 Puppet 服务器和客户端

    https://linux.cn/article-3959-1.html https://docs.puppet.com/

  7. .NET平台系列27:在 Linux 上安装 .NET Core/.NET5/.NET6

    系列目录     [已更新最新开发文章,点击查看详细] .NET 在不同的 Linux 发行版上可用. 大多数 Linux 平台和发行版每年都有一个主要版本,并提供用于安装 .NET 的包管理器. 本 ...

  8. 如何在CentOS/RHEL & Fedora上安装MongoDB 3.2

    MongoDB(名称取自"huMONGOus")是一个有着全面灵活的索引支持和丰富的查询的数据库.MongoDB通过GridFS提供强大的媒体存储.点击这里获取MongoDB的更多 ...

  9. Oracle10g/11g 在SUSE/RHEL上的安装与配置

    在过去对众多项目的支撑过程中,Oracle作为首选数据库,其安装与配置过程成了重复性最多的工作之一.在此,我进行了总结,并分享出来,希望能对大家有所帮助.随着Oracle版本的提升,从9i -> ...

随机推荐

  1. javascript 判断IOS版本号

    先来观察 iOS 的 User-Agent 串: iPhone 4.3.2 系统: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; ...

  2. ubuntu 安装maven提示出错 The program &#39;mvn&#39; can be found in the following packages

    问题: I am trying to install apache maven 3 in Ubuntu 12.04 lts. What I did was open the terminal then ...

  3. Servlet的学习之web路径问题

    在这个篇章中,我们来学习下在web开发过程中会碰到的路径写法问题. 在之前的web应用开发,尤其是Servlet的学习过程中,我们碰到多次要写路径的问题,这些路径并不统一,因此这里将大致说明下各个方法 ...

  4. TCP与UDP各自特点对比

    UDP和TCP是我们最常用的两种通信方式,下面就两者之间的特点做一个对比: 1.UDP主要用在实时性要求高以及对质量相对较弱的地方,如流媒体. 2.TCP既然是面向连接的,那么运行环境必然要求其保证可 ...

  5. HDU--杭电--4502--吉哥系列故事——临时工计划--背包--01背包

    吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  6. Android开发之搜Ya项目说明(3)

    项目 搜芽移动client ----seller,app,base三个包的简单说明 作者 曾金龙 Tel:18664312687 QQ :470910357@qq.com 时间 2014-10-14 ...

  7. 辛星与您解读PHP页面跳转的几种实现方式

    因为页面跳转的使用是很频繁的,因此这里给出几种方式,事实上我想我并没有归纳全,毕竟函数那么多,要一下想起来还是特别麻烦的,于是,想到哪里就记到哪里把,等着以后再整理汇总. 第一种方式就是使用heade ...

  8. Mysql免安装版脚本

    使用Mysql过程中经常需要使用到免安装版本(绿色版)的Mysql,开始网上搜了一大堆,但还真是不怎么好用. 只好自己琢磨了一番,现在放出来和大家分享下: //安装启动服务 @ECHO OFF if  ...

  9. Mac OS提示# 14:自己定义文件图标

    本教程的其余部分再一次错过了方法,和一些使用提示,做一些额外的,我们希望对大家有帮助.  自己定义图标      对于Mac OSX用户来说,Dashboard,Dock栏,壁纸以及各种键盘触摸板的快 ...

  10. 【Access2007】将Excel表导入到Access2007在现有的表成

    将Excel表导入到Access2007,你会发现邪恶Access2007这将帮助你自己主动创建表.您是否想插入完全没问你到一个现有的表. 然后,我们需要解决这个问题: 一.常的步骤先将Excel表导 ...