背景

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. “cmake 点点”表示在上一级目录(CMakeLists.txt所在目录)编译
  2. 微软开发x86模拟器,让Windows for ARM能运行x86应用
  3. C++多态的实现原理
  4. mysql raid_DBA们应该知道的RAID卡知识_MySQL
  5. Redis工作笔记-事务
  6. 前端开发 网络图片的下载与切图操作 0228 需操作
  7. html列表逆序输出,JS实现倒序输出的几种常用方法示例
  8. python数值类型教程_Python数值类型 int、float、complex 详解
  9. MyEclipse查看.class文件
  10. (转)悟透javascript
  11. Parameterize Method(令函数携带参数)
  12. linux perl 升级,科学网—一次Perl版本升级引发的吐槽大会 - 黄健的博文
  13. 虚幻4渲染编程(环境模拟篇)【第三卷:体积云天空模拟(3)---高层云】
  14. 投资银行理论与实务(一):投资银行学概论
  15. Linux好书、经典书籍推荐
  16. 【mba项目管理论文】S 公司项目管理绩效评价现状与问题(节选)
  17. 11-28 BUU做题记录
  18. 2022-2000-1978:世纪前后22年
  19. 【gstreamer中appsink和appsrc操作数据转换cv::Mat】参考文献
  20. android 开发纸牌游戏,Windows自带游戏《纸牌》的秘密:全球流行,开发者却没拿到一分钱...

热门文章

  1. C#实现实体类和XML相互转换
  2. Qt Creator基本使用方法
  3. C#中文件及文件夾的遍历
  4. python nameko用于生产_用 Python、 RabbitMQ 和 Nameko 实现微服务
  5. mysql 服务无法启动 没有报告任何错误_My SQL学习之路(一)
  6. DVWA暴力破解(Brute Force)——全等级(Low,Medium,High,lmpossible)精讲
  7. 关于显示当前日期并且自动生成后面的日期,月份也正常显示
  8. tcpdump抓两个网卡的包_tcpdump 抓包统计 分享助,请问用tcpdump抓包后,如何查看每个包...
  9. windows平台下用CMake工具编译osg用法说明
  10. Android开发之WebView加载自定义scheme报错net::ERR_UNKNOWN_URL_SCHEME(附带源码标题下面可点击下载)