freeswitch源码编译windows_【Thrift】Windows编译Thrift源码及其依赖库
背景
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多方法 ...
最新文章
- 网络爬虫-爬取微博热门话题前15个
- html5语音对讲,c#语音对讲demo
- [置顶] 显示/隐藏登录密码
- python数据分析pandas_Python数据分析之 pandas汇总和计算描述统计
- java string 异或_Java源码——String
- “拍卖”干草的Farmer(洛谷P2637题题解,Java语言描述)
- 使用VMware克隆Linux系统
- 多线程 转账_Java多线程编程基础三(原子性,可见性和有序性)
- MATLAB中的概率函数
- Cmax最优但∑Ci不一定最优 例子
- 软件测试之TCP、UPD协议详解
- windows 的快捷截图
- no resolver defined to resolve
- 信道检测手机软件 ios_3.2、《无线通信基础》--点对点通信:检测、分集与信道的不确定性--时间分集...
- 解决电脑usb接口无法识别u盘,键盘,鼠标的问题。
- 数据结构课程设计-哈夫曼树及其应用
- 2020年数据标注行业回顾及2021年展望
- 英文学习20171221
- “跑路风波”的内在缘由?P2P网络信贷将何去何从?
- 测试员就是“背锅侠”?学会这些,扔掉测试人常背的3口“锅”
热门文章
- WindowsService服务程序开发
- stm32车牌识别_基于STM32单片机的车牌识别
- ug区域轮廓铣没有重叠距离_UG数控加工编程 _固定轴、可变轴曲面轮廓铣图文详解...
- 【BUG记录】百度人脸识别采集黑屏
- @Url cannot be used with @GET URL (parameter #1)
- java delphi 三层_三层架构delphi+Java+Oracle模式的实现
- Android开发之高德地图无法显示地图的原因
- matlab文件目录表示,Matlab - 文件目录路径操作_读取不同路径下的相同文件名表格...
- 你看不懂的spring原理是因为不知道这几个概念
- 查找数组是否有重复元素