IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Windows下boringssl和lsquic编译方法 -> 正文阅读

[C++知识库]Windows下boringssl和lsquic编译方法

????????近期工作原因需要在Windows下编译lsquic库,网上查找了下相关资料,发现并不完整,踩了很多坑,这里记录下编译过程。

????????官方参考文档:https://github.com/litespeedtech/lsquic/blob/master/BUILD-WINDOWS.md

????????依赖项:Perl,Go,boringssl,zlib,libevent

????????安装工具:这里使用vcpkg,cmake,vs2015 Update3及以上,使用vcpkg工具则vs必须包含英语语言包,或者不使用vcpkg工具自行下载编译相关依赖库(zlib,libevent)。推荐一个vs下载地址,MSDN。

? ? ? ? 编译lsquic,必须先编译boringssl,boringssl编译过程如下:

? ? ? ? 1.?安装Go语言安装包,官网下载安装即可

????????2. 安装Perl,官网下载安装即可。这里直接下载安装二进制文件,其他方法下载太慢或需要编译源码。注意使用命令行工具运行安装脚本时,必须以管理员权限运行命令行工具。

????????

? ? ? ? 3. 安装vcpkg,参考https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md

? ? ? ? 4. 以上工具安装完成后,为方便的在命令行使用相关命令,需要设置下环境变量,参考下图示例,Path环境变量下没有vcpkg和ActivateState安装目录的话,需要手动添加下:

????????

? ? ? ? 5. 环境变量设置完成后,需要重新打开一个命令行窗口,否则环境变量可能未生效

? ? ? ? 6. 要编译64位库,在命令行输入

vcpkg install zlib:x64-windows-static

? ? ? ? ?安装64位zlib库,如果想要编译32位库,参数修改为x86-windows-static,本文编译32位库

? ? ? ? 7. 相同的,输入以下命令安装32位libevent库

vcpkg install libevent:x86-windows-static

? ? ? ? 到这里,所需依赖库已经基本安装完成,接下来正式开始boringssl的编译。

? ? ? ? 8. 启用Perl环境,在命令行输入?

state activate ActiveState/Perl-5.32

? ? ? ? 你安装的版本号可能与之不同,选择你安装的Perl并启动,启动成功后如下图所示

????????

9. 切换到你的boringssl源代码路径,boringssl源代码请从GitHub获取,GitHub上代码路径https://github.com/google/boringssl,注意,跨盘符时,直接使用cd命令会切换路径失败,需要先使用“[盘符]:”切换到相应盘符,再使用cd命令到相应文件夹,参考下图

????????

? ? ? ? ?在boringssl源代码路径下,可以看到CMakeLists.txt,个人习惯在该目录下新建文件夹build,进入该目录,输入以下命令生成vs工程:

cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static -DBUILD_SHARED_LIBS=OFF -DOPENSSL_NO_ASM=1 ..

? ? ? ? 参考官方文档会发现比之少了两个参数,-DCMAKE_GENERATOR_PLATFORM=x64和--config Debug,这两个参数会引起cmake错误,原因还未搞清楚,可能是没有使用vs的命令行工具导致,但是即使使用vs命令行工具,激活Perl环境时似乎会清除vs命令行设置的环境变量,依然会报错,所以还是打开sln工程进行编译。

? ? ? ? ?10. 打开BoringSSL.sln,生成解决方案,此时应该会编译失败,提示无法打开cypto.lib,这是因为编译cypto工程失败,在命令行输入

go env -w GOPROXY=https://goproxy.cn

? ? ? ? 再重新编译即可,原因参考https://blog.csdn.net/qq_22211217/article/details/101854419

? ? ? ? 到这里,boringssl已经编译完成,接下来终于可以开始编译lsquic了。首先当然是需要下载下来lsquic的源码了,链接:https://github.com/litespeedtech/lsquic

? ? ? ? 11. 进入lsquic目录,新建build文件夹并在命令行进入该文件夹,输入以下命令生成sln工程:

cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -DOPENSSL_NO_ASM=1 -DCMAKE_TOOLCHAIN_FILE=C:\src\vcpkg\scripts\buildsystems\vcpkg.cmake -DBORINGSSL_DIR=E:\work\talmsgsdk\quic\boringssl\boringssl\build -DBORINGSSL_INCLUDE=E:\work\talmsgsdk\quic\boringssl\boringssl\include -DVCPKG_TARGET_TRIPLET=x86-windows-static ..

? ? ? ? 对其中几个参数解释下:

? ? ? ? (1)DCMAKE_BUILD_TYPE,这个根据你生成的boringssl的版本来填,而且一定要填写正确,因为cmake会根据这个参数和DBORINGSSL_DIR参数来查找依赖库

? ? ? ? (2)DBORINGSSL_DIR,boringssl库生成目录

????????(3)DBORINGSSL_INCLUDE,boringssl头文件目录

? ? ? ? (4)DCMAKE_TOOLCHAIN_FILE,指示vcpkg下载的依赖库和头文件路径

? ? ? ? (5)DVCPKG_TARGET_TRIPLET,指示vcpkg需要的依赖库类型

? ? ? ?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:25:18  更:2021-08-12 16:27:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 9:44:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码