linux安装thrift库

系统环境:

[email protected] ~/t/gen-cpp> lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.3 LTS
Release:	14.04
Codename:	trusty
[email protected] ~/t/gen-cpp>

git:https://github.com/li-chunli/thrift_study

thrift官网: http://thrift.apache.org/

官方安装教程: http://thrift.apache.org/docs/install/debian

使用方法: http://wiki.apache.org/thrift/ThriftUsageC%2B%2B

安装依赖(如果不安装,编译也通过,但是用的时候各种问题,比如链接时找不到thfift库)

[email protected]:~# apt-get install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config

下载thrift源代码:

[email protected]:~$ mkdir thrift
[email protected]:~$ cd thrift/
[email protected]:~/thrift$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/thrift/0.9.3/thrift-0.9.3.tar.gz
[email protected]:~/thrift$ ll
-rw-rw-r-- 1 chunli chunli 8.5M Oct 12  2015 thrift-0.9.3.tar.gz

解压:

[email protected]:~/thrift$ tar xf thrift-0.9.3.tar.gz 
[email protected]:~/thrift$ cd thrift-0.9.3/
[email protected]:~/thrift/thrift-0.9.3$ 
[email protected]:~/thrift/thrift-0.9.3$ ./configure
[email protected]:~/thrift/thrift-0.9.3$ echo $?
0

编译10分钟:

[email protected]:~/thrift/thrift-0.9.3$ make
[email protected]:~/thrift/thrift-0.9.3$ echo $?
0

安装:

[email protected]:~/thrift/thrift-0.9.3$ sudo make install 
[sudo] password for chunli: 
[email protected]:~/thrift/thrift-0.9.3$ echo $?
0

检查:

[email protected]:~/thrift/thrift-0.9.3$ ll /usr/local/bin/thrift
-rwxr-xr-x 1 root root 41M Oct 15 16:46 /usr/local/bin/thrift

[email protected]:~/thrift/thrift-0.9.3$ /usr/local/bin/thrift -version
Thrift version 0.9.3

[email protected]:~/thrift/thrift-0.9.3$ thrift -version
Thrift version 0.9.3

测试:

1,Generating the server code

[email protected]:~/thrift$ vim test.thrift 
#!/usr/local/bin/thrift --gen cpp

namespace cpp Test

service Something {
  i32 ping()
}

2,run thrift :

[email protected]:~/thrift$ thrift --gen cpp test.thrift 
[email protected]:~/thrift$ ll
drwxrwxr-x  2 chunli chunli 4.0K Oct 15 16:50 gen-cpp
-rw-rw-r--  1 chunli chunli   90 Oct 15 16:49 test.thrift

3,Exploring the generated code - The Server

[email protected]:~/thrift$ ll gen-cpp/
total 44K
-rw-rw-r-- 1 chunli chunli  11K Oct 15 16:50 Something.cpp
-rw-rw-r-- 1 chunli chunli 8.1K Oct 15 16:50 Something.h
-rw-rw-r-- 1 chunli chunli 1.3K Oct 15 16:50 Something_server.skeleton.cpp
-rw-rw-r-- 1 chunli chunli  276 Oct 15 16:50 test_constants.cpp
-rw-rw-r-- 1 chunli chunli  356 Oct 15 16:50 test_constants.h
-rw-rw-r-- 1 chunli chunli  268 Oct 15 16:50 test_types.cpp
-rw-rw-r-- 1 chunli chunli  427 Oct 15 16:50 test_types.h
[email protected]:~/thrift$


4,Implementing the Server

[email protected]:~/thrift$ cd gen-cpp/
[email protected]:~/thrift/gen-cpp$ cp Something_server.skeleton.cpp Something_server.cpp 
[email protected]:~/thrift/gen-cpp$

5, find lib_path

[email protected]:~# find / -name TDispatchProcessor.h
/home/chunli/thrift/thrift-0.9.3/lib/cpp/src/thrift/TDispatchProcessor.h

6,Compiling

6.1 thrift依赖boost,安装boost库

[email protected]:~/thrift/gen-cpp$ sudo apt-get install libboost-all-dev
 thrift依赖libevent,安装libevent库
[email protected]:~/thrift/gen-cpp$ sudo apt-get install libevent-dev


6.2

g++ -Wall -I/home/chunli/thrift/thrift-0.9.3/lib/cpp/src/ -c Something.cpp -o something.o
g++ -Wall -I/home/chunli/thrift/thrift-0.9.3/lib/cpp/src/ -c Something_server.cpp -o server.o
g++ -Wall -I/home/chunli/thrift/thrift-0.9.3/lib/cpp/src/ -c test_constants.cpp -o constants.o
g++ -Wall -I/home/chunli/thrift/thrift-0.9.3/lib/cpp/src/ -c test_types.cpp -o types.o



7,Linking

g++ -L/usr/local/lib *.o -o Something_server -lthrift

8,看看结果:

[email protected]:~/thrift/gen-cpp$ ll
total 820K
-rw-rw-r-- 1 chunli chunli 4.3K Oct 15 20:53 constants.o
-rw-rw-r-- 1 chunli chunli 332K Oct 15 20:53 server.o
-rw-rw-r-- 1 chunli chunli  11K Oct 15 16:50 Something.cpp
-rw-rw-r-- 1 chunli chunli 8.1K Oct 15 16:50 Something.h
-rw-rw-r-- 1 chunli chunli 228K Oct 15 20:53 something.o
-rwxrwxr-x 1 chunli chunli 203K Oct 15 20:53 Something_server
-rw-rw-r-- 1 chunli chunli 1.3K Oct 15 17:52 Something_server.cpp
-rw-rw-r-- 1 chunli chunli 1.3K Oct 15 16:50 Something_server.skeleton.cpp
-rw-rw-r-- 1 chunli chunli  276 Oct 15 16:50 test_constants.cpp
-rw-rw-r-- 1 chunli chunli  356 Oct 15 16:50 test_constants.h
-rw-rw-r-- 1 chunli chunli  268 Oct 15 16:50 test_types.cpp
-rw-rw-r-- 1 chunli chunli  427 Oct 15 16:50 test_types.h
[email protected]:~/thrift/gen-cpp$


[Writing the client code]

自己写一个客户端程序:

[email protected]:~/thrift/gen-cpp$ vim Something_client.cpp
#include "Something.h"  // As an example
#include <transport/TSocket.h>
#include <transport/TBufferTransports.h>
#include <protocol/TBinaryProtocol.h>

using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

using namespace Test;

int main(int argc, char **argv) {
	boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
	boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
	boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));

	SomethingClient client(protocol);
	transport->open();
	client.ping();
	transport->close();

	return 0;
}
[email protected]:~/thrift/gen-cpp$

编译,链接

[email protected]:~/thrift/gen-cpp$ g++ -Wall -I/usr/local/include/thrift/  -c Something_client.cpp -o client.o
[email protected]:~/thrift/gen-cpp$ g++ -L/usr/local/lib client.o something.o constants.o types.o -o Something_client -lthrift

开始运行:

检查服务端的库文件:

[email protected]:~/thrift/gen-cpp$ ldd Something_server
	linux-vdso.so.1 =>  (0x00007ffcae577000)
	libthrift-0.9.3.so => not found
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa496d98000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa496b82000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa4967bd000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa4964b7000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa49709c000)

可以看到缺少一个库,查找库的路径:

[email protected]:~/thrift/gen-cpp# find / -name "*libthrift-0.9.3.so*"
/usr/local/lib/libthrift-0.9.3.so
/home/chunli/thrift/thrift-0.9.3/lib/cpp/.libs/libthrift-0.9.3.so

把库的路径添加到系统的路径中

[email protected]:~/thrift/gen-cpp# cat /etc/ld.so.conf.d/libc.conf 
# libc default configuration
/usr/local/lib/
[email protected]:~/thrift/gen-cpp#


运行服务端 程序:

[email protected]:~/thrift/gen-cpp$ ./Something_server

查看网卡的监听:9090端口

[email protected]:~/thrift/gen-cpp# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      801/vsftpd      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      950/sshd        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1103/mysqld     
tcp6       0      0 :::22                   :::*                    LISTEN      950/sshd        
tcp6       0      0 :::9090                 :::*                    LISTEN      23737/Something_ser
[email protected]:~/thrift/gen-cpp#


运行客户端:

[email protected] ~/t/gen-cpp> ./Something_client 
[email protected] ~/t/gen-cpp> ./Something_client 
[email protected] ~/t/gen-cpp> ./Something_client 
[email protected] ~/t/gen-cpp> ./Something_client

服务端的输出:

[email protected]:~/thrift/gen-cpp$ ./Something_server 
ping
ping
ping
ping
时间: 2024-12-20 14:34:49

linux安装thrift库的相关文章

linux安装thrift

安装配置Thrift Thrift的编译器使用C++编写的,在安装编译器之前,首先应该保证操作系统基本环境支持C++的编译,安装相关依赖的软件包,如下所示 sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel openssl-devel 下载Thrift的软件包,并解压缩: wget http://mi

Linux安装mysql-python库时报错解决办法

用pip安装mysql-python库的时候遇到如下报错 [email protected]:~# pip install mysql-python Collecting mysql-python Using cached MySQL-python-1.2.5.zip Complete output from command python setup.py egg_info: sh: 1: mysql_config: not found Traceback (most recent call l

Linux 安装依赖库

###安装依赖库###yum -y install rsync net-snmp syslog net-snmp-devel wget patch screen gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bz

Linux 安装GD库

GD 安裝 第一部需要做的是先要安裝 GD 到系統內,而安裝 GD 前需要安裝 jpeg-6b, libpng, zlib, freetype.以下是下载网址:GD 2.0.33jpeg-6blibpng 1.2.8zlib 1.2.3freetype-2.1.10.tar.gz 代码: wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.

Linux 安装GSL库至指定目录

转自:https://blog.csdn.net/u012248802/article/details/80655902 GSL简介:GNU Scientific Library(GSL)是一个开源的科学计算的函数库,里面有大量的数学计算函数,非常强大. 1)下载GSL安装文件:http://mirrors.ustc.edu.cn/gnu/gsl/gsl-2.4.tar.gz 这里为了方便,我将下载的压缩文件放在了我的主目录下:/home/xuyue/gsl-2.4.tar.gz 2)解压缩:t

linux 安装ffmpeg库

添加变量 export FFMPEG_HOME=/opt/ffmpeg Yasm: wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -zxvf yasm-1.3.0.tar.gz ./configure --prefix="$FFMPEG_HOME" --bindir="$FFMPEG_HOME/bin" make make install 添加至环境变量export

Linux 安装及配置 Nginx + ftp 服务器

Nginx 安装及配置 一.Nginx 简介: Nginx("engine x") 是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品.是 C 语言编写的,建议在 Linux 运行. 二.环境软件版本准备: 系统平台:CentOS release 6.6 (Final) 64位. Nginx:nginx-1.10.3.t

linux安装nginx教程

一.在linux服务器创建 一个文件夹用来 安装文件  二.在线安装:gcc.pcre.zlib.openssl组件 1.需要安装gcc的环境.yum install gcc-c++ 2. PCRE     yum install -y pcre pcre-devel PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库.nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre 注:

Linux安装nginx的环境要求

Linux下切记不能乱删东西!我把pcre强制删除后,什么命令都不能使用了,系统奔溃,血的教训! nginx是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境. 一.  gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ 二.  PCRE PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式