Thrift测试

Ubuntu下测试Thrift

  1. Thrift介绍

Thrift 官网

http://thrift.apache.org/

版本下载

http://archive.apache.org/dist/thrift/

  1. 安装编译环境

Ubuntu12.04下编译失败,automakeboots等需要版本较高,apt-get install命令不能安装,自己编译太麻烦,放弃。

         以下在Ubuntu16下测试。Thrift0.11.0,通过thrift命令生产代码编译链接有问题,改为thrift0.10.0.

2.1 编译环境

1sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

Ubuntu16下自带的GCC、G++版本为5.4.0

 

    1. 编译thrift
  1. http://archive.apache.org/dist/thrift/0.10.0/thrift-0.10.0.tar.gz
  2. 解压 tar –xzvf thrift-0.10.0.tar.gz –C ./
  3. ./configure --with-cpp --with-boost --without-python --without-csharp --without-java --without-erlang --without-perl --with-php --without-php_extension --without-ruby --without-haskell --without-go

 

  1. make

 

  1. make install

 

检查thrift是否安装成功

运行thrift –version提示Thrift version 0.10.0,则安装成功。

 

错误处理:提示thrift: error while loading shared libraries: libthriftc.so.0: cannot open shared object file: No such file or directory

处理方法:http://www.linuxdiyf.com/linux/27018.html

    1. 编译Demo

https://blog.csdn.net/feng973/article/details/80434855

 

  1. thrift -r --gen cpp student.thrift
  2. 下载thriftlearn程序编译测试。

附录1:

Ubuntu中无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)

随笔 - 160  文章 - 0  评论 - 10

sudo apt-get install git
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?

当执行sudo apt-get相关的命令,会显示上面类似的错误
参考别人的解决方法是

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

可以运行

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock

参考链接:

  1. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)


 

 

 

 

Windows下测试Thrift

在VS2010下编译测试Thrift-0.10.0(32)

  1. 编译Thrift

1.1安装boots1.55

方法一:

1)下载boost 1.55

         http://sourceforge.net/projects/boost/files/boost/1.55.0/,

解压到X:\windows\boost_1_55_0

2)编译boost_1_55_0

启动Visual Studio 命令提示(2010),切换到目录X:\windows\boost_1_55_0,运行

 bootstrap,生成bjam.exe

编译

一般不需要全部编译,部分编译就够用了

全部编译的命令行:bjam --toolset=msvc-12.0 --build-type=complete stage

部分编译的命令行:bjam --toolset=msvc-12.0 --with-date_time --with-thread

编译成64位的命令:bjam --toolset=msvc-12.0 address-model=64 --build-type=complete stage 

查看需要编译库的命令行:bjam --show-libraries

 

3)使用编译的静态库

配置属性-》链接器-》常规-》附加库依赖项-boost\stage\lib
配置属性-》链接器-》输入-》附加依赖项-libboost_timer-vc120-1_55

 

    可参考http://blog.csdn.net/misskissc/article/details/9793645

方法二(推荐):

  1. 下载boost_1_55_0-msvc-10.0-32.exe VS2010编译的执行文件,含源码和编译生成的库

https://excellmedia.dl.sourceforge.net/project/boost/boost-binaries/1.55.0-build2/boost_1_55_0-msvc-10.0-32.exe

  1. 安装到X:\windows\boost_1_55_0需要3.4GB硬盘空间

 

测试代码

建立Visula C++控制台项目bootstest,设置项目属性,增加头文件和库文件路径。

项目的解决方案那里找到属性页,打开并选择配置属性,选择VC++目录,设置包含目录和库目录,

增加环境变量BOOST_ROOT : X:\windows\boost_1_55_0

包含目录$(BOOST_ROOT);

库目录 $(BOOST_ROOT)\lib32-msvc-10.0;

uploading.4e448015.gif转存失败重新上传取消

 

编译CTRL+F5,出现如下界面则安装配置成功。

uploading.4e448015.gif转存失败重新上传取消

1.2安装OpenSSL-Win32 (版本为1.1.0)

方法一:现成版本(Win32OpenSSL-1_1_0i.exe)  Openssl.rar

https://slproweb.com/products/Win32OpenSSL.html

 

增加环境变量:OPENSSL_ROOT_DIRX:\windows\OpenSSL-Win32

下载编译好的版本直接使用,设置编译选项即可。

 

鼠标右击工程名---属性

1. 配置属性---VC++目录---在include目录中新增“$(OPENSSL_ROOT_DIR) \include”。

2. VC++目录---“Library files”选择中新增目录“$(OPENSSL_ROOT_DIR) \lib”。

方法二:源码编译(未验证)

安装OpenSSL (https://blog.csdn.net/iw1210/article/details/50947654

 

1.下载 OpenSSL并解压,比如解压到 d:\openssl-1.0.1s 目录。(下载地址:http://www.openssl.org/)

2.下载ActivePer并安装,比如安装到d:\perl目录,并在环境变量中添加path=d:\perl\bin 。(下载地址:http://www.activestate.com/ActivePer)

3.建一个存放OpenSSL库文件的目录,比如为 d:\OpenSSLlib 。

4.运行2010控制台:开始-所有程序—Microsoft visual studio2010——Visual Studio Tools——Visual Studio 2010命令提示

5.进入OpenSSL源代码目录路径

 cd d:\openssl-1.0.1s

 

6.按顺序执行下列命令

 

d:\openssl-1.0.1s>perl Configure VC-WIN64A no-asm --prefix=d:\OpenSSLlib (存放编译后的库文文件目录)

d:\openssl-1.0.1s>ms\do_win64a

d:\openssl-1.0.1s>nmake -f ms\ntdll.mak (编译动态库)

d:\openssl-1.0.1s>nmake -f ms\nt.mak    (编译静态库)

 

装载OpenSSL库文件到前面指定的目录(d:\OpenSSLlib)中:

d:\openssl-1.0.1s>nmake -f ms\ntdll.mak install

d:\openssl-1.0.1s>nmake -f ms\nt.mak install

 

路径设置同方法一

 

测试代码

         见工程OpenSslTest(),编译正常说明配置正确。X:\windows\OpenSSLTest

        

         uploading.4e448015.gif转存失败重新上传取消

 

因编码问题,汉字显示乱码与SSL无关忽略。

1.3安装libevent(2.0.21-stable)

安装

参考:https://www.cnblogs.com/luxiaoxun/p/3603399.html

下载:

http://libevent.org/

修改:

         修改下面三个文件开头的_WIN32_WINNT,为0x0500

    libevent-2.0.21-stable\event_iocp.c

libevent-2.0.21-stable\evthread_win32.c

libevent-2.0.21-stable\listener.c

 

后来验证可以不用修改

         编译:

启动Visual Studio 命令提示(2010),切换到目录X:\windows\libevent-2.0.21-stable运行nmake /f Makefile.nmake

测试

工程见:X:\windows\LibeventTest

鼠标右击工程名---属性

1. 配置属性---VC++目录---在include目录中新增“$(LIBEVENT_ROOT_DIR)/include;”。

2. VC++目录---“Library files”选择中新增目录“$(LIBEVENT_ROOT_DIR)”。

3.代码生成-->运行库:多线程调试 (/MTd)(Debug下),多线程 (/MT)(Release下)

4.连接器->输入:ws2_32.lib;wsock32.lib;libevent.lib;libevent_core.lib;libevent_extras.lib;

附录:windows版本宏定义

Minimum system required

Macros to define

Win8

_WIN32_WINNT>=0x0602  WINVER>=0x0602

Win7

_WIN32_WINNT>=0x0601  WINVER>=0x0601

Windows Server 2008 R2

_WIN32_WINNT>=0x0601 WINVER>=0x0601

Windows Server 2008

_WIN32_WINNT>=0x0600 WINVER>=0x0600

Windows Vista

_WIN32_WINNT>=0x0600 WINVER>=0x0600

Windows Server 2003

_WIN32_WINNT>=0x0502 WINVER>=0x0502

Windows XP

_WIN32_WINNT>=0x0501 WINVER>=0x0501

Windows 2000

_WIN32_WINNT>=0x0500 WINVER>=0x0500

Windows NT 4.0

_WIN32_WINNT>=0x0400 WINVER>=0x0400

Windows Me

_WIN32_WINDOWS=0x0500 WINVER>=0x0500

Windows 98

_WIN32_WINDOWS>=0x0410 WINVER>=0x0410

Windows 95

_WIN32_WINDOWS>=0x0400 WINVER>=0x0400

 

1.4编译Thrift库

      编译lib文件

1)打开工程X:\thrift-0.10.0\lib\cpp\thrift.sln

         2)设置编译选项

          项目属性->VC++目录-》包含目录中增加:

          X:\windows\boost_1_55_0;$(OPENSSL_ROOT_DIR)\include;X:\thrift-0.10.0\lib\cpp\src;X:\windows\ThriftDemo\Common;

        

          在库目录中增加:

          $(BOOST_ROOT)\lib32-msvc-10.0;$(OPENSSL_ROOT_DIR)\lib;X:\thrift-0.10.0\lib\cpp\Debug;X:\windows\boost_1_55_0\lib32-msvc-10.0;

          X:\windows\boost_1_55_0\lib32-msvc-10.0

          X:\windows\OpenSSL-Win32\lib\VC

     $(OPENSSL_ROOT_DIR)\lib;

          X:\windows\libevent-2.0.21-stable

          X:\thrift-0.10.0\lib\cpp\Debug;

    

     连接器->输入中增加:openssl.lib;libthrift.lib;libthriftnb.lib;

        

    C/C++ à 代码生产 à 运行库 修改为:“多线程调试 (/MTd)”

 

         备注:查看命令lib接口的指令:Vs 的命令窗口:dumpbin /linkermember libthrift.lib > 1.txt

        

      测试

         1)打开工程,见

2)设置配置项目

项目属性->VC++目录-》包含目录中增加:

         X:\windows\boost_1_55_0;X:\thrift-0.10.0\lib\cpp\src;X:\windows\ThriftDemo\Common;

          在库目录中增加:

         X:\thrift-0.10.0\lib\cpp\Debug;X:\windows\boost_1_55_0\lib32-msvc-10.0;

c/c++->代码生成->运行时库-> 多线程调试 (/MTd)

 

 

你可能感兴趣的:(Thrift测试)