日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發布時間:2023/12/15 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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源码及其依赖库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。