背景

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 Configure VC-WIN64A --prefix=D:OpenSSL

  • 编译&安装:
nmake
nmake install

Boost(版本:1.71.0)

  • 这个库是最大的,但是是最成熟的,这里编译的x64版本,基本没有遇到什么问题
  • 需要注意的就是1.71.0的bjam由b2代替,完整命令如下:
.bootstrap.bat
.b2 stage --toolset=msvc-14.1 --stagedir="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 "stdlib.h"
#include "string.h"#define PACKAGE_VERSION "0.12.0"

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

    • thrift.sln中有两个项目,其中thriftnb是non-block的意思本来是不依赖openssl的,但是VS下就是会报这个错误,所以需要修改libthriftnb.vcxproj,把OPENSSL_ROOT_DIRinclude放到IncludePath里面
    • 注:我这里直接在VS里面改是不行的,生成的时候会被覆盖,修改如下(在libthriftnb.vcxproj的152~176行):
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"><IncludePath>$(ProjectDir)src;$(ProjectDir)srcthriftwindows;$(BOOST_ROOT)include;$(BOOST_ROOT);$(LIBEVENT_ROOT)WIN32-Code;$(LIBEVENT_ROOT)include;$(LIBEVENT_ROOT);$(OPENSSL_ROOT_DIR)include;$(IncludePath)</IncludePath>
</PropertyGroup>

freeswitch源码编译windows_【Thrift】Windows编译Thrift源码及其依赖库相关推荐

  1. window编译php,php windows 编译

    php-5.2.2 windows 编译 使用的是visual studio 2005 没有使用 cgwin 编译后的目标编译到e:\php目录下你需要先下载prebuild, 解压缩到E:\win3 ...

  2. linux cmake 编译64位,cmake编译win下64位obs

    obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...

  3. 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 )

    文章目录 一.安装 OpenSSL 二.安装其它依赖库 三.Linux 内核编译完成 一.安装 OpenSSL 参考 [错误记录]编译 Linux 内核报错 ( fatal error: openss ...

  4. java音频源码,Android Java实时音频SDK示例源码下载 - 开发者中心 - ZEGO即构科技

    示例源码 本地下载 本地下载 GitHub下载 说明 示例代码运行指引 1 准备环境 在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求(以下说明皆以 macOS 开发电脑为 ...

  5. 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    目录 一.祥云人工智能开放平台 二.编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget) curl库重新配置,编译,安装 三.编程实现人脸识别 翔云 ...

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

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

  7. krita windows编译源码

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一.krita 二.krita源码编译 1. Windows下编译 1.编译准备 2. 相关命令 使用CMake编译krita 重新编译 使用CMk ...

  8. windows编译Paraview源码

    目录 一. 环境准备 二. 编译 1. CMake 2. Visual Studio 一. 环境准备 下载基本所需: paraview官方给了编译文档:https://github.com/Kitwa ...

  9. windows编译安卓源码记录

    环境 Windows10 + vmware17 + ubuntu22 ubuntu环境设置 装完ubuntu系统后拖拽复制文件进去验证vmtools功能情况,如果vmtools异常很麻烦,试了n多方法 ...

最新文章

  1. 网络爬虫-爬取微博热门话题前15个
  2. html5语音对讲,c#语音对讲demo
  3. [置顶] 显示/隐藏登录密码
  4. python数据分析pandas_Python数据分析之 pandas汇总和计算描述统计
  5. java string 异或_Java源码——String
  6. “拍卖”干草的Farmer(洛谷P2637题题解,Java语言描述)
  7. 使用VMware克隆Linux系统
  8. 多线程 转账_Java多线程编程基础三(原子性,可见性和有序性)
  9. MATLAB中的概率函数
  10. Cmax最优但∑Ci不一定最优 例子
  11. 软件测试之TCP、UPD协议详解
  12. windows 的快捷截图
  13. no resolver defined to resolve
  14. 信道检测手机软件 ios_3.2、《无线通信基础》--点对点通信:检测、分集与信道的不确定性--时间分集...
  15. 解决电脑usb接口无法识别u盘,键盘,鼠标的问题。
  16. 数据结构课程设计-哈夫曼树及其应用
  17. 2020年数据标注行业回顾及2021年展望
  18. 英文学习20171221
  19. “跑路风波”的内在缘由?P2P网络信贷将何去何从?
  20. 测试员就是“背锅侠”?学会这些,扔掉测试人常背的3口“锅”

热门文章

  1. WindowsService服务程序开发
  2. stm32车牌识别_基于STM32单片机的车牌识别
  3. ug区域轮廓铣没有重叠距离_UG数控加工编程 _固定轴、可变轴曲面轮廓铣图文详解...
  4. 【BUG记录】百度人脸识别采集黑屏
  5. @Url cannot be used with @GET URL (parameter #1)
  6. java delphi 三层_三层架构delphi+Java+Oracle模式的实现
  7. Android开发之高德地图无法显示地图的原因
  8. matlab文件目录表示,Matlab - 文件目录路径操作_读取不同路径下的相同文件名表格...
  9. 你看不懂的spring原理是因为不知道这几个概念
  10. 查找数组是否有重复元素