背景

Windows下thrift的编译还挺麻烦的,故在此记录编译thrift的时候的一些坑(2019-11-13)

第三方库(boost、libevent、openssl)

  • 问题一:vcpkg巨慢,还不一定能下载自己直接编译
  • 问题二:直接下载exe没有include目录,还是不行

OpenSSL(版本:1.1.1d)

  • 推荐直接使用Windows安装包安装:OpenSSL官方下载 - 码客
  • 源码安装:example: Windows 下编译 OpenSSL
  • 很多地方会选择no-asm的模式,目前的经验来看,直接安装nasm然后,不要no-asm是最靠谱的opessl是最基本的库,需要先安装perl,然后配置
  • 下载并安装NASM:Index of /pub/nasm/releasebuilds/2.15.04/win64
    • 安装的时候记得看路径,需要手动把路径添加到PATH
  • 下载并安装PERL:Download Perl for development use: ActivePerl | ActiveState
  • 如果发现perl缺少模块的话,可以参考(ppm doesn't work after installing ActiveState Perl)进行添加
perl 

  • 编译&安装:
nmake
nmake install

Boost(版本:1.71.0)

  • 这个库是最大的,但是是最成熟的,这里编译的x64版本,基本没有遇到什么问题
  • 需要注意的就是1.71.0的bjam由b2代替,完整命令如下:
"D:Boost" link=static runtime-link=shared runtime-link=static threading=multi debug release

Libevent(版本:2.1.11)

  • 编译时候会报错:需要根据错误提示进行修改,这里的UINT32_MAX未定义的问题

    • 需要到对应的文件添加:#include <stdint.h>
  • 编译: nmake /f Makefile.nmake
  • 由于windows下要区分MT,MD,MTd,MDd的原因所以还是用cmake生成VS项目产生对应的库
    • 第一个问题:
CMake Error: File D:/libevent-2.1.11-stable/cmake/Uninstall.cmake.in does not exist.
CMake Error at CMakeLists.txt:1498 (configure_file):
configure_file Problem configuring file

  • 到对应的CMakeLists.txt:1498会发现一个地址:https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake, 将这里的代码复制下来并保存成D:/libevent-2.1.11-stable/cmake/Uninstall.cmake.in即可

Thrift (版本:0.12.0)

  • 截至到2019-11-13,thrift-0.13.0其实已经发布,但是windows下的版本有比较多的问题,所以使用的0.12.0版本
  • 下载源码之后需到thrift-0.12.0/lib/cpp先找到3rdparty.props文件,修改BOOST_ROOT、LIBEVENT_ROOT、OPENSSL_ROOT_DIR分别指向对应的路径
  • 找不到envent2/event-config.h的问题需要把libevent的WIN32-Core下面的nmake/event2/event-config.h拷贝到include/event2
  • 找不到thrift/config.h的问题,需要在src/thrift/下面自己创建文件,并添加如下几行:
#include 

  • 最诡异的错误:找不到openssl/ssl.h

    • thrift.sln中有两个项目,其中thriftnb是non-block的意思本来是不依赖openssl的,但是VS下就是会报这个错误,所以需要修改libthriftnb.vcxproj,把OPENSSL_ROOT_DIRinclude放到IncludePath里面
    • 注:我这里直接在VS里面改是不行的,生成的时候会被覆盖,修改如下(在libthriftnb.vcxproj的152~176行):
<PropertyGroup 

gitlab windows安装_【Thrift】Windows编译Thrift源码及其依赖库相关推荐

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

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

  2. boost安装_【环境搭建】源码安装Boost

    写C++的话boost是必不可少的,本文将boost的安装过程用写成脚本,直接一行命令解决整个编译安装过程: sudo bash boost-linux-installer.sh 下面是`boost- ...

  3. windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

  4. python编译器源码_编译python源码

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! 尝试通过源码自己编译 python,使用的系统是 ubuntu14.04 l ...

  5. vs2017运行显示系统找不到指定的文件_windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

  6. ubuntu16.04编译android6_r1源码绕坑贴

    1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6.0的源码编译出来了,各种配置,各种error,各种爬坑,特写此博客记录爬坑经历.先上图,Ubuntu上编译完后成功运行模拟 ...

  7. Java扩展Nginx之二:编译nginx-clojure源码

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 为什么要编译nginx-clojure源码 作为< ...

  8. 【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建的二进制库和头文件 | 编译 Oboe 源码 )

    文章目录 一.导入 Oboe 库 二.使用预构建的二进制库和头文件 三.编译 Oboe 源代码 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Starte ...

  9. 在Windows和Linux上编译gRPC源码操作步骤(C++)

    gRPC最新发布版本为v1.23.0,下面以此版本为例说明在Windows和Linux下编译过程. Windows7/10 vs2103编译gRPC源码操作步骤: 1. 需要本机已安装Git.CMak ...

最新文章

  1. Keras 最新《面向小数据集构建图像分类模型》
  2. 分页功能 (包含增删改查)工具类
  3. 最小二乘法,python3实现
  4. Snchronize对象锁同步
  5. Angular单元测试的一个错误消息
  6. SQL中binary 和 varbinary的区别
  7. ubuntu c++检测usb口事件变化_炼就“火眼金睛”,FETA40i-C核心板“牵手”光时域反射仪...
  8. 关于“数据中心”的最强入门科普
  9. python字符串结合操作符的使用
  10. php 实现数组数据查询,thinkphp数据查询和遍历数组实例_PHP
  11. SQL Server 2005 Express数据库为“只读”
  12. Percona XtraBackup 安装介绍篇
  13. ipad写python代码用什么软件_iPad 能用来写代码吗?有哪些必备软件推荐?
  14. ABAQUS2017帮助文档查看_51CAE_新浪博客
  15. SSM 实现学生成绩管理系统(完整代码)
  16. java栈中存放_java栈存放什么?java堆存放什么?
  17. ubuntu16.04编译obmc
  18. Eureka(02-入门)Eureka是什么
  19. 2018版ISTQB FL基础级大纲全解析
  20. 前端学习之CSS第三天

热门文章

  1. 怎么才能升级成鸿蒙系统,怎么能升级成鸿蒙系统
  2. java restful项目打包_66-JT项目04(项目打包发布/JSON/项目业务)
  3. Excel的导入与导出
  4. python相机拍照显示_从solvePnP获取摄影机姿势
  5. MySQL导出的文件权限_mysql导出数据到文件权限问题
  6. 树莓派linux系统识别u盘启动,使用U-Boot让树莓派从U盘启动
  7. redis 从节点如何选举从节点升级为主节点_Redis哨兵的配置和原理
  8. 微型计算机中的数据总线用来,微型计算机技术及应用(戴梅萼4)练习题答案.doc...
  9. android判断是否已经安装成功,android 判断应用程序是否已安装
  10. ovirt 双机_ovirt kvm嵌套虚拟化