thrift c语言支持,thrift C编译安装

一、写在前面

thrift是一种跨语言函数调用的框架,可以方便的实现多语言应用程序间的函数调用。

比如我现在有两个应用程序,一个是C语言写的,一个是python写的。如果我希望这两个程序可以进行函数调用,我们可以想到很多种方式,共享文件,消息队列,socket等等,然后双方规定好协议,比如传输1调用对方的fun函数。但是这样实现有很多种弊端,如果两者间调用函数特别多,函数入参、返回值又不是基本数据类型的话,那这个函数调用框架就有的忙活的了。

thrift说“别怕,看我的”。thrift的思想其实很简单。A和B两个语言之间要实现通信,如果A可以之间调用B中的函数,通过函数获取A想要的结果,这种实现无非是极好的。但是A要调用B中的函数,需要解决一些问题:数据类型如何实现互通转换;

如果实现函数调用

为了解决上述两个问题,thrfit规定通信的双方需要提供一个接口文档,这个接口文档是语言无关的,接口文档中所有的数据类型都是thrfit自己定义的数据类型,如i32,i64,bool等,当然这些thrift数据类型在不同语言都有对应的数据类型,函数的入参和返回值也都限于接口文档中定义的数据类型。比方我需要个复杂数据类型,那么我就在接口文档中定义个复杂数据类型,这个复杂的数据类型由thrift基本数据构成,在C语言看来可能用结构体表示,而JAVA可能用类来实现一把。其实就是thrift在不同语言间加了个中间件,果然所有的软件问题都能通过加一个中间件来解决,如果有,就再加一层。

1b63395e85681e1ceba4e86a9ad3426b.png

至于通信就更加简单了,我只要告诉对方我需要调用什么函数,入参是什么,返回值是什么,对方接到这个消息之后就会查找自己实现的接口文档中的函数,然后把接到的参数翻译成自己语言的数据(这个过程由thrift框架完成),最后把函数执行结果填充给thrift即可。

既然这么简单,一定要去瞧一瞧,那我们快上车吧。

二、thrfit编译安装

老规矩,编译安装采取源代码方式安装。需要安装些编译工具sudo apt-get install flex bison ;

安装autotool相关工具sudo apt-get install libboost-dev libtool;

安装glib库,当然你机器上要是有的话可以忽略。下载代码http://ftp.gnome.org/pub/gnome/sources/glib/2.50/,安装相关依赖sudo apt-get install libffi-dev,然后去glib工程里执行./configure --with-pcre=internal --enable-libmount=no --prefix=/usr,然后make & make install即可;

下面为了编译方便,我们撸一个编译脚本好了,起名叫build.sh,里面的内容如下,执行一下即可,当然你如果不想编译其他语言的thrift库,在./configure后添加--without-语言就可以了,如--without-cpp --without-nodejs --without-python:#!/bin/bash

CUR_DIR=`pwd`

THRIFT_VERSION=thrift

cd ${CUR_DIR}/${THRIFT_VERSION}

make distclean

#1.config

export CFLAGS="-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"

export LDFLAGS="-lglib-2.0"

./configure --with-php=no --prefix=/usr/

make & make install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值