freeswitch源码编译windows_【Thrift】Windows编译Thrift源码及其依赖库
![](/assets/blank.gif)
背景
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源码及其依赖库相关推荐
- window编译php,php windows 编译
php-5.2.2 windows 编译 使用的是visual studio 2005 没有使用 cgwin 编译后的目标编译到e:\php目录下你需要先下载prebuild, 解压缩到E:\win3 ...
- linux cmake 编译64位,cmake编译win下64位obs
obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...
- 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 )
文章目录 一.安装 OpenSSL 二.安装其它依赖库 三.Linux 内核编译完成 一.安装 OpenSSL 参考 [错误记录]编译 Linux 内核报错 ( fatal error: openss ...
- java音频源码,Android Java实时音频SDK示例源码下载 - 开发者中心 - ZEGO即构科技
示例源码 本地下载 本地下载 GitHub下载 说明 示例代码运行指引 1 准备环境 在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求(以下说明皆以 macOS 开发电脑为 ...
- 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)
目录 一.祥云人工智能开放平台 二.编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget) curl库重新配置,编译,安装 三.编程实现人脸识别 翔云 ...
- gitlab windows安装_【Thrift】Windows编译Thrift源码及其依赖库
背景 Windows下thrift的编译还挺麻烦的,故在此记录编译thrift的时候的一些坑(2019-11-13) 第三方库(boost.libevent.openssl) 问题一:vcpkg巨慢, ...
- krita windows编译源码
Qt系列文章目录 文章目录 Qt系列文章目录 前言 一.krita 二.krita源码编译 1. Windows下编译 1.编译准备 2. 相关命令 使用CMake编译krita 重新编译 使用CMk ...
- windows编译Paraview源码
目录 一. 环境准备 二. 编译 1. CMake 2. Visual Studio 一. 环境准备 下载基本所需: paraview官方给了编译文档:https://github.com/Kitwa ...
- windows编译安卓源码记录
环境 Windows10 + vmware17 + ubuntu22 ubuntu环境设置 装完ubuntu系统后拖拽复制文件进去验证vmtools功能情况,如果vmtools异常很麻烦,试了n多方法 ...
最新文章
- “cmake 点点”表示在上一级目录(CMakeLists.txt所在目录)编译
- 微软开发x86模拟器,让Windows for ARM能运行x86应用
- C++多态的实现原理
- mysql raid_DBA们应该知道的RAID卡知识_MySQL
- Redis工作笔记-事务
- 前端开发 网络图片的下载与切图操作 0228 需操作
- html列表逆序输出,JS实现倒序输出的几种常用方法示例
- python数值类型教程_Python数值类型 int、float、complex 详解
- MyEclipse查看.class文件
- (转)悟透javascript
- Parameterize Method(令函数携带参数)
- linux perl 升级,科学网—一次Perl版本升级引发的吐槽大会 - 黄健的博文
- 虚幻4渲染编程(环境模拟篇)【第三卷:体积云天空模拟(3)---高层云】
- 投资银行理论与实务(一):投资银行学概论
- Linux好书、经典书籍推荐
- 【mba项目管理论文】S 公司项目管理绩效评价现状与问题(节选)
- 11-28 BUU做题记录
- 2022-2000-1978:世纪前后22年
- 【gstreamer中appsink和appsrc操作数据转换cv::Mat】参考文献
- android 开发纸牌游戏,Windows自带游戏《纸牌》的秘密:全球流行,开发者却没拿到一分钱...
热门文章
- C#实现实体类和XML相互转换
- Qt Creator基本使用方法
- C#中文件及文件夾的遍历
- python nameko用于生产_用 Python、 RabbitMQ 和 Nameko 实现微服务
- mysql 服务无法启动 没有报告任何错误_My SQL学习之路(一)
- DVWA暴力破解(Brute Force)——全等级(Low,Medium,High,lmpossible)精讲
- 关于显示当前日期并且自动生成后面的日期,月份也正常显示
- tcpdump抓两个网卡的包_tcpdump 抓包统计 分享助,请问用tcpdump抓包后,如何查看每个包...
- windows平台下用CMake工具编译osg用法说明
- Android开发之WebView加载自定义scheme报错net::ERR_UNKNOWN_URL_SCHEME(附带源码标题下面可点击下载)