msys下mingw编译thrift

5 篇文章 0 订阅

1.依赖关系

thrift依赖boost,libevent,zlib

libevent依赖openssl

所以编译顺序为openssl,livevent,boost,thrift,这些库在linux上编译比较方便,在windows上编译经常是问题一堆,想想都头疼,在windows上装一个类unix环境会丝滑不少,省不少事,常用的是msys2,所以我们可以说这些库全都依赖于msys2

先声明:所有的依赖包在msys里可以直接安装软件包,不用从源码编译,我都自己编了一遍后才发现,费了不少事

2.msys2安装

先到https://www.msys2.org/下载安装msys2,安装完以后只有基本的linux环境,编译环境需要单独安装,先修改msys源,官方源国内太慢,修改msys安装目录下的以下三个文件

文件/etc/pacman.d/mirrorlist.mingw32顶部增加一行

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

文件/etc/pacman.d/mirrorlist.mingw64增加一行

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

文件/etc/pacman.d/mirrorlist.msys增加一行

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

启动msys控制台,安装gcc环境

安装64位gcc:pacman -S mingw-w64-x86_64-toolchain,gcc安装到mingw64目录
安装32位gcc:pacman -S mingw-w64-i686-toolchain,gcc安装到mingw32目录
使用上面两种方式安装的gcc,用mingw32.exe启动msys时,使用32位gcc,用mingw64启动msys时,使用64位gcc
用 pacman -S gcc make 安装安装的是64位gcc,gcc安装到/usr/lib目录,使用这种方式安装的gcc,如果没按上面两种方式安装toolchain,则无论怎么启动都是64位gcc

3.openssl编译

https://www.openssl.org/source/下载openssl源码,目前稳定版为1.1.1,下载这个即可,后面还会带一个字母,这个版本名也很有意思都从1.1.1a到1.1.1i了,就分三段,也不涨版本号,后面升字母编号,下一个版本号升到3.0了,还是预览版

解压openssl压缩包,启动msys,进入openssl目录,按照linux固定套路

$ ./config
$ make
$ make install

然后等着,运行完毕及编译完成,install时要注意install目录设置,如果安装目录指定了c盘,则要以管理员身份运行msys,否则没有权限创建目录和拷贝文件,修改安装目录为其他盘也可以

4.boost编译

https://www.boost.org/上下载boost源码,解压,在msys2里进入boost目录

执行
$ ./bootstrap.sh 生成编译工具
执行
$ ./b2 stage --toolset=gcc --stagedir=/d/apps/boost link=static runtime-link=shared threading=multi debug release

stage表示只生成dll和lib,不拷贝头文件,link=static表示调用boost的app使用静态方式链接boost,runtime-link表示boost调用其他库使用动态链接方式,threading表示编译为多线程版本,debug release表示同时生成debug版库文件和release库文件

5.libevent编译

https://libevent.org/上下载libevent源码,解压,在msys2里进入源码目录

$ ./configure
$ make
$ make install

make install 默认会安装在/mingw64/lib目录中,如想修改安装位置,找到源码目录下生成的Makefile文件,修改prefix = 想安装到的目录

6.zlib

用pacman -Q zlib查询发现,msys已经带了zlib

7.编译thrift

https://thrift.apache.org/download下载thrift源码,解压,msys进入thrift源码目录

执行
$ ./configure

执行完后,最后出的结果显示只编译python库,c++库不编译,还需要qt5,bison,byacc,flex,lex这一堆,实在不想在msys里再装

经过各种折腾,尝试了各种办法,在msys里configure,在windows里用cmake生成makefile,都不成功,msys因为依赖问题一直无法启用c++编译,cmake缺各种package,无法执行,最后在thrift源码里找到了再msys下编译的说明https://github.com/apache/thrift/blob/master/build/cmake/README-MSYS2.md,上面明确说了这种方式不支持nonblockserver编译,我只用客户端,不用服务端,也可以接受,照着上面的命令敲了一遍,编译成功,不过test的时候有一个没过,不知道是不是因为服务器不能编译的原因,回头试试能不能用吧

也是看到这里的时候才发现所有的依赖都可以直接安装软件包,不用自己一个个编译==__==

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值