1.必备:

1. Dev C++
2. boost 1.53.0 (我下的 1.69.0 也可以过编译)
3. Flex & Bison 
下载地址:
https://sourceforge.net/projects/winflexbison/files/latest/download

https://jaist.dl.sourceforge.net/project/winflexbison/win_flex_bison-latest.zip

4. 源代码

5.libevent (编译64位)

thrift 的 cmake 配置:

6.OpenSSL (编译64位)

thrift的 cmake 配置:

郑重声明: 编译64位的thrift 需要编译64位的 libevent 和 OpenSSL !

2.配置Cmake:

1.设置源码、生成目录的路径。


2.设置变量路径:
Boost_INCLUDE_DIR         boost 引用目录

BISON_EXECUTABLE       bison 程序路径

FLEX_EXECUTABLE          flex 程序路径

CMAKE_CXX_COMPILER     g++ 程序路径

CMAKE_MAKE_PROGRAM    mingw32-make 程序路径

BUILD_TUTORIALS    这个构去掉, 这是编译 教程 。

CMAKE_INSTALL_PREFIX   库的安装路径

CMAKE_BUILD_TYPE 设置为Release

With_LibEvent 开启

With_OpenSSL 开启

Shared_lib  开启,生成 dll,否则不生成DLL哦。

3.编译:

cmd 进入到生成目录; 添加 make 程序的路径到PATH环境变量:

SET PATH=%PATH%;C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\

开始编译并安装:

mingw32-make -j4 install

4.遇到的问题&解决:

1.
C:\Users\myuser\Downloads\thrift-master\lib\cpp\src\thrift\transport\THttpServer.cpp: In member function 'std::string apache::thrift::transport::THttpServer::getTimeRFC1123()':
C:\Users\myuser\Downloads\thrift-master\lib\cpp\src\thrift\transport\THttpServer.cpp:43:66: error: 'gmtime_s' was not declared in this scope
   #define THRIFT_GMTIME(TM, TIME)             gmtime_s(&TM, &TIME)
                                                                  
和编译 ollvm 遇到相同问题, 直接注释掉。 
(为了避免未来出错,不要注释代码。) 加入 头文件 time.h 可以解决。 
2.

C:\Users\myuser\Downloads\thrift-master\lib\cpp\src\thrift\transport\TFileTransport.cpp: In member function 'void apache::thrift::transport::TFileTransport::writerThread()':
C:\Users\myuser\Downloads\thrift-master\lib\cpp\src\thrift\transport\TFileTransport.cpp:324:45: error: '_chsize_s' was not declared in this scope
       if (0 == THRIFT_FTRUNCATE(fd_, offset_)) {
                                             ^

搜索源码发现: 
thrift-master\lib\cpp\src\thrift\transport\PlatformSocket.h

#  define THRIFT_FTRUNCATE _chsize_s

添加 io.h 文件的引用:
C:\Users\myuser\Downloads\thrift-master\lib\cpp\src\thrift\transport\PlatformSocket.h

#ifndef _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_
#  define _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_
#define _WIN32 1
#ifdef _WIN32
#  include <winsock2.h>
#  include <io.h>

同时,\thrift-master\lib\cpp\src\thrift\transport\TFileTransport.cpp         
文件需要添加 PlatformSocket.h     文件的引用 。

搜索 _chsize_s 的 msdn,发现引用IO.h ,但事实上没有这个函数。

这个是 secured 的函数, 换成 _chsize ,坑的一B。

#  define THRIFT_FTRUNCATE _chsize

附录:

我编译好的 Win64 位带有 Non blocking 的 thrift库(内含thrift编译器exe、dll、a文件):

链接:https://pan.baidu.com/s/1acHysRZ1v0CJYy8BcaJsGQ
提取码:1lev

太菜了,编译这些开源项目花了好几天……

Windows MinWG 编译 thrift相关推荐

  1. freeswitch源码编译windows_【Thrift】Windows编译Thrift源码及其依赖库

    背景 Windows下thrift的编译还挺麻烦的,故在此记录编译thrift的时候的一些坑(2019-11-13) 第三方库(boost.libevent.openssl) 问题一:vcpkg巨慢, ...

  2. gitlab windows安装_【Thrift】Windows编译Thrift源码及其依赖库

    背景 Windows下thrift的编译还挺麻烦的,故在此记录编译thrift的时候的一些坑(2019-11-13) 第三方库(boost.libevent.openssl) 问题一:vcpkg巨慢, ...

  3. Windows下编译Chrome V8

    主要还是参考google的官方文档: How to Download and Build V8 Building on Windows 同时也参考了一些其它的中文博客: 脚本引擎小pk:SpiderM ...

  4. windows下编译leveldb

    前提条件,下载boost库并编译 boost库弄好后,就可以编译leveldb了 首先,下载leveldb-windows,这个github上有 一. 1文件->新建->从现有代码文件创建 ...

  5. Windows下编译 Hadoop

    Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...

  6. Windows下编译tensorflow-gpu教程

    这两个也要看: https://zhuanlan.zhihu.com/p/29029860 https://zhuanlan.zhihu.com/p/34942873 Windows下编译tensor ...

  7. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...

  8. 如何在Windows下编译OpenSSL?

     OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  9. windows下编译支持https的curl

    先编译好openssl,过程详见:<windows下编译openssl> 编译好zlib,过程详见<windows下编译zlib> 1. 下载curl 官网:https://c ...

最新文章

  1. 使用 netfilter 处理IPv6报文
  2. Python之旅:列表
  3. 用chkconfig配置linux自启动服务
  4. Samba平台搭建和用户自行修改密码环境搭建笔记
  5. 如何还原桌面图标_如何为Windows 10桌面图标还原或更改文本的默认外观?
  6. Java Stream:计数始终是计数吗?
  7. 联想一体机电源键不亮_联想电脑一体机B505拆机经验
  8. Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway 1
  9. 为何@Autowired注解无法实现第三方类的注入?
  10. linux7inittab文件不存在,Linux下修复inittab文件丢失的两种方法
  11. MATLAB 对 提取出的流线 添加颜色
  12. HDU2006 求奇数的乘积【入门】
  13. Echarts的使用方法
  14. ie内核出现问题的解决方法
  15. JavaSE学习总结——Java基础
  16. 人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水(转载)
  17. 十万,百万,千万,快狗打车架构是怎么演进的?
  18. 浅谈用python连接 功率分析仪(Power Analyzer) 和 数位万用表(Digital Multimeter)
  19. 参考文献格式自动生成器
  20. LT01 创建转储单

热门文章

  1. 微信小程序开发学习4(视图与逻辑)
  2. Excel表格文本/数字/科学计数法的格式转换问题
  3. win11系统512g怎么分盘合理?
  4. pyscripter与python的关系_Codecademy Python和Pyscripter提供错误消息
  5. C++入门:构造函数,析构函数,拷贝构造函数,运算符重载详解
  6. 防抖(Debouncing)和节流(Throttling)
  7. 电脑连不上网,浏览器网页打不开,但qq微信能发消息
  8. 绿色便携版谷歌浏览器制作流程
  9. SRM 557 1000
  10. Petya and Countryside