win10+Qt5.12.10编译thrift

一、环境

操作系统:windows 10专业版

Qt:5.12.10,安装路径D:\Qt\Qt5.12.10

       因thrift依赖boost、libevent、openssl、zlib,因此需要先编译这些库。网上有很多编译thrift的方法,但很多都不全,作者经过自己探索,记录以下详细步骤,以下编译步骤亲测可用。

       在编译Windows下MinGW版本的thrift时,因为无法在msys里面直接用./configure、make、make install的方法进行编译,网上很多方法只说了如何编译boost、libevent、openssl、zlib等依赖库,到编译thrift时因为太过复杂就直接结束了。为方便大家编译thrift,作者做了一个pro文件,可直接在Qt Creator打开后进行编译。

文章中使用到的msys、perl、openssl、boost、libevent、libthrift.pro、compiler.pro等下载地址:

https://download.csdn.net/download/xzhswust/86543148​​​​​​​


二、编译步骤

1、安装perl

   (1)、解压perl-5.24.0-mingw32.zip到C:\perl-5.24.0;
   (2)、环境变量path中添加C:\perl-5.24.0\bin;

2、安装MSYS

   (1)、点击MSYS-1.0.11.exe执行安装,默认安装就行,安装过程中控制台会提示y/n?,输入y,再敲回车,继续执行安装即可;
   (2)、记事本打开C:\msys\1.0\etc\fstab.sample,修改c:/mingw/mingw为D:/Qt/Qt5.12.10/5.12.10/mingw73_64
   (3)、修改c:/ActiveState/perl为C:/perl-5.24.0/bin

3、MinGW编译boost

   (1)、安装Qt(使用的是5.12.10),如果已安装则跳过该步骤;
   (2)、解压boost_1_75_0.7z到D:\soft,解压后路径为D:\soft\boost_1_75_0
   (3)、在soft目录下创建boost和boost_build两个文件夹;
   (4)、在D:\soft\boost_1_75_0目录下创建build目录;下面第(5)和第(6)两种方式可以任选一种:
   (5)、用windows控制台编译

          PATH环境变量中添加D:/Qt/Qt5.12.10/Tools/mingw730_64/bin,目的是为了在cmd中能执行gcc和g++命令;
          打开cmd,执行下面命令:
          cd /d/soft/boost_1_75_0
          bootstrap.bat gcc
          b2 install --prefix="D:\soft\boost_build"
          b2 --build-dir="D:\soft\boost_1_70_0\build" --prefix="D:\soft\boost" toolset=gcc install
         编译需要10-30分钟,编译完成后,可以把D:\soft\boost_build和D:\soft\boost_1_75_0\build两个目录删掉,最终的boost库安装在D:\soft\boost里面;
         将D:\soft\boost\include\boost-1_75\boost目录拷贝到D:\Program Files\boost_1_75_0\mingw730\x64\include目录下;
         将D:\soft\boost\lib目录下的所有文件拷贝到D:\Program Files\boost_1_75_0\mingw730\x64\lib目录下;
   (6)、用msys编译
      打开MSYS(双击C:\msys\1.0\msys.bat),执行如下命令
      export PATH=$PATH:/d/Qt/Qt5.12.10/Tools/mingw730_64/bin   #注意这里路径不能为D:/,必须修改为/D/,这里注意反斜杠,因为是模拟unix环境,因此为/
          cd /d/soft/boost_1_75_0
      mkdir build
      mkdir build/libs
          ./bootstrap.sh --with-libraries=all --with-toolset=gcc
          #–with-libraries 指定编译哪些boost库,all的话就是全部编译,只想编译部分库的话就把库的名称写上,之间用 , 号分隔即可,可指定的库下面介绍
          #–with-toolset 指定编译时使用哪种编译器,Linux下使用gcc即可,如果系统中安装了多个版本的gcc,在这里可以指定gcc的版本,比如–with-toolset=gcc-4.4
      ./b2 --build-dir="D:\soft\boost_1_75_0\build" --prefix="D:\soft\boost_1_75_0\build\libs" toolset=gcc install      
      #./b2 install --prefix="D:\soft\boost_1_70_0\build\libs"   #不需要执行,上面的语句执行后已将头文件和动态库安装到了D:\soft\boost_1_75_0\build\libs里面
      编译需要10-30分钟,编译完成后,最终的boost库安装在D:/soft/boost_1_75_0/install里面;
         将D:\soft\boost_1_75_0\build\libs\include\boost-1_75目录拷贝到D:\Program Files\boost_1_75_0\mingw730\x64\include目录下;
         将D:\soft\boost_1_75_0\build\libs\lib目录下的所有文件拷贝到D:\Program Files\boost_1_75_0\mingw730\x64\lib目录下;

4、MinGW编译libevent

  (1)、解压libevent-2.1.12-stable.tar.gz到D:\soft,解压后路径为D:\soft\libevent-2.1.12-stable;
  (2)、打开MSYS(双击C:\msys\1.0\msys.bat),执行如下命令:

         export PATH=$PATH:/d/Qt/Qt5.12.10/Tools/mingw730_64/bin
         cd /d/soft/libevent-2.1.12-stable     #这里注意反斜杠,因为是模拟unix环境,因此为/
         mkdir build
         ./configure –disable-openssl --prefix=D:/soft/libevent-2.1.12-stable/build
         make
         make install
         注:编译成功后,在D:/soft/libevent-2.1.12-stable/build可以看到头文件、库文件和bin文件
  (3)、将D:\soft\libevent-2.1.12-stable\build\include目录拷贝到D:\Program Files\libevent-2.1.12-stable\mingw730\x64\include;
  (4)、将D:\soft\libevent-2.1.12-stable\build\bin目录拷贝到D:\Program Files\libevent-2.1.12-stable\mingw730\x64\bin;
  (5)、将D:\soft\libevent-2.1.12-stable\build\lib目录下的所有文件拷贝到D:\Program Files\libevent-2.1.12-stable\mingw730\x64\lib目录下;

5、MinGW编译openssl

   (1)、解压perl-5.24.0-mingw32.zip到C:\perl-5.24.0,环境变量path中增加C:\perl-5.24.0\bin;
   (2)、解压openssl-1.1.1p.tar.gz到D:\soft,解压后路径D:\soft\openssl-1.1.1p;
   (5)、打开MSYS(双击C:\msys\1.0\msys.bat),执行如下命令:
       export PATH=$PATH:/d/Qt/Qt5.12.10/Tools/mingw730_64/bin   #注意这里路径不能为D:/,必须修改为/D/,这里注意反斜杠,因为是模拟unix环境,因此为/
          gcc -v   #查看gcc环境变量设置是否成功
      export PATH=$PATH:/c/perl-5.24.0/bin   #注意这里路径不能为C:/,必须修改为/C/,这里注意反斜杠,因为是模拟unix环境,因此为/
          per -v   #查看perl环境变量设置是否成功
          cd /d/soft/openssl-1.1.1p     #这里注意反斜杠,因为是模拟unix环境,因此为/
          mkdir build
          perl Configure mingw64 no-shared no-asm --prefix=/d/soft/openssl-1.1.1p/build

          如果编译32位的库,将命令中mingw64替换为mingw
          上面语句执行完后,用记事本打开D:/soft/openssl-1.1.1p/Makefile文件,搜索PERL=,将PERL=C:/perl-5.24.0/bin/perl.exe修改为PERL=/c/perl-5.24.0/bin/perl.exe,如果不修改在后面执行make的时候会报找不到perl的错误
      make
      make install
  (6)、将D:\soft\openssl-1.1.1p\build\include目录拷贝到D:\Program Files\openssl-1.1.1p\mingw730\x64\include;
         将D:\soft\openssl-1.1.1p\build\bin目录拷贝到D:\Program Files\openssl-1.1.1p\mingw730\x64\bin;
         将D:\soft\openssl-1.1.1p\build\share目录拷贝到D:\Program Files\openssl-1.1.1p\mingw730\x64\share;
         将D:\soft\openssl-1.1.1p\build\lib目录下的所有文件拷贝到D:\Program Files\openssl-1.1.1p\mingw730\x64\lib目录下;

6、MinGW编译zlib

   (1)、解压zlib-1.2.10.tar.gz到D:\soft,解压后路径为D:\soft\zlib-1.2.10;
   (2)、打开MSYS(双击C:\msys\1.0\msys.bat),执行如下命令:
          cd /d/soft/zlib-1.2.10     #这里注意反斜杠,因为是模拟unix环境,因此为/
          将win32目录下的makefile.gcc复制到当前目录
          mkdir build
          mingw32-make -f makefile.gcc
   (3)、编译后的文件在D:\soft\zlib-1.2.10目录下,将libz.a、libz.dll.a、zlib1.dll到D:\Program Files\zlib-1.2.10\mingw730\x64\lib;
   (4)、将D:\soft\zlib-1.2.10目录下zlib.h、zutil.h、zconf.h文件拷贝到D:\Program Files\zlib-1.2.10\mingw730\x64\include目录下;

7、编译thrift动态库

   (1)、解压thrift-0.14.1.tar.gz到D:\soft\thrift-0.14.1,将libthrift.pro复制到D:\soft\thrift-0.14.1\lib\cpp;
   (2)、将D:\soft\thrift-0.14.1\config.h文件拷贝到D:\soft\thrift-0.14.1\lib\cpp\src\thrift下,修改拷贝过去的config.h文件,将所有HAVE开头的宏都注释掉;
   (3)、QtCreator打开libthrift.pro,编译器选择MinGW,分别编译Debug版本和Release版本,编译后的动态库在D:\soft\thrift-0.14.1\lib\cpp\debug和D:\soft\thrift-0.14.1\lib\cpp\release目录中; 
   (4)、将D:\soft\thrift-0.14.1\lib\cpp\src\thrift目录拷贝到D:\Program Files\thrift-0.14.1\mingw730\x64\include目录下;
           注:实际只需要拷贝头文件即可,但因为thrift头文件和cpp文件都在该目录下,如果只拷贝头文件,需要一个一个去找,很麻烦,因此为了简便全部拷贝过去;  
   (5)、将debug和release目录下的.a文件和.dll文件都拷贝到D:\Program Files\thrift-0.14.1\mingw730\x64\lib目录下;

8、编译thfit生成工具

   (1)、解压thrift-0.14.1.tar.gz到D:\soft\thrift-0.14.1,将compiler.pro复制到D:\soft\thrift-0.14.1\compiler\cpp;
   (2)、QtCreator打开compiler.pro,编译器选择MinGW,编译Release版本,编译后的可执行程序在D:\soft\thrift-0.14.1\compiler\cpp\release目录中; 
   (3)、将release目录下的thrift.exe文件拷贝到D:\Program Files\thrift-0.14.1\mingw730\x64\bin目录下;

你可能感兴趣的:(开源库编译,qt)