quiche编译

netty http3使用了rust语言的quiche,quiche使用了c++语言的boringssl,
网上没有找到编译好的quiche,只能自己搭建rust环境编译

1、rust安装

见官网https://www.rust-lang.org/tools/install
我是用的是windows的ubuntu,所以直接使用:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

2、其他基础库

需要安装cmake、go、perl等,如果没有安装,编译过程也会提示

sudo apt install cmake
sudo apt install golang
sudo apt install perl

3、下载quiche代码和boringssl代码

将boringssl代码放到quiche/deps/boringssl/
https://github.com/cloudflare/quiche
https://github.com/google/boringssl.git

4、编译quiche

QUICHE_BSSL_PATH="/mnt/d/codeC/quiche-0.6.0/deps/boringssl" cargo build

这时会出现错误:

error: could not find native static library `crypto`, perhaps an -L flag is missing?
error: could not compile `quiche` (lib) due to previous error

修改quiche/src/build.rs:
println!(“cargo:rustc-link-search=native={}”, build_dir);
修改为:

println!("cargo:rustc-link-search=native={}/crypto", build_dir);
println!("cargo:rustc-link-search=native={}/ssl", build_dir);

在这里插入图片描述
5、编译boringssl

cd boringssl
mkdir build
cmake ..
make
这时有可能提示:
= note: /usr/bin/ld: /mnt/d/codeC/quiche-0.6.0/deps/boringssl/build//crypto/libcrypto.a(bcm.c.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC/usr/bin/ld: final link failed: bad valuecollect2: error: ld returned 1 exit status

修改boringssl下面的CMakeLists,在合适位置加上:
在这里插入图片描述
然后重新生成makefile并重新编译:

cd build
cmake ..
make clean
make

再按照上文重新编译quiche,如果还是报错,手动替换掉target目录下旧的libcrypto.a文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web学习--maven--项目管理工具

写在前面: 这学期搞主攻算法去了,web的知识都快忘了。开始复习学习了。 文章目录 maven介绍功能介绍maven安装jar包搜索仓库 pom文件项目介绍父工程依赖管理属性控制可选依赖构建 依赖管理依赖的传递排除依赖可选依赖 maven生命周期分模块开发模块聚合…

debian linux安装配置企业私有网盘

一、适用环境 1、中小型企业的某些部门之间经常要进行数据的交换与共享时,则可使用企业内部专业的服务器,把剩余的硬盘存储容量配置成为共享网盘的形式,供部门之间进行数据交换。 2、可将多个硬盘通过debian Linux系统组成软阵列的1个逻辑盘…

【Matlab】神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值

目前关于神经网络遗传算法函数极值寻优——非线性函数求极值的博客资源已经不少了,我看了下来源,最初的应该是来自于Matlab中文论坛,论坛出版的《MATLAB神经网络30个案例分析》第4章就是《神经网络遗传算法函数极值寻优——非线性函数极值寻优…

一次源码编译安装PostgreSql失败

需要perl;之前博文已提到;之前有一种编程语言叫perl,此perl应该不是那个;可到其官网下载,Perl Download - www.perl.org 安装时添加到环境变量; 可能是一个东西;有编程语言和工具;大…

Python爬虫使用代理IP的实现

使用爬虫时,如果目标网站对访问的速度或次数要求较高,那么你的 IP 就很容易被封掉,也就意味着在一段时间内无法再进行下一步的工作。这时候代理 IP 能够给我们带来很大的便利,不管网站怎么封,只要能找到一个新的代理 I…

在 TypeScript 中有效地使用 keyof 和 typeof 来表示类型

在本文中,我们将学习如何通过组合类型运算符和枚举来提取和声明常量类型typeof,以使您的代码库得到优化。keyof 先决条件 为了获得更好的编码体验,您应该在 IDE 中安装 TypeScript,例如VSCode。它将为您提供许多基本功能&#xff…

MySQL的基本语法

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于MySQL的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.数据库(建立,查…

备战秋招002(20230704)

文章目录 前言一、今天学习了什么?二、关于问题的答案1.线程池2.synchronized关键字3、volatile 总结 前言 提示:这里为每天自己的学习内容心情总结; Learn By Doing,Now or Never,Writing is organized thinking. …

【网络原理】TCP/IP协议五层模型

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录 …

浏览器绘制图表的 N 种方法 | 可视化

前言 DORAVIS 可视化大屏编辑器,是植根于浏览器的可视化平台。我们不难发现,DORAVIS 的众多图表中,有多种实现方案。如,基于 ECharts 二次开发的 BI 图表,有基于 Mapbox/leaflet 等实现的地理图表,以及根据…

【Flutter 组件】005-基础组件:单选、开关和复选框

【Flutter 组件】005-基础组件:单选、开关和复选框 文章目录 【Flutter 组件】005-基础组件:单选、开关和复选框一、概述二、基本使用1、开关代码示例运行结果 2、复选框代码示例运行结果 3、多个选项单选代码示例运行结果 4、多个选项多选代码示例运行结…

易微联2.4G通断器添加到手机步骤

蓝牙款无WIFI,不用扫码,按住通断器上的按钮,会先闪一下,再闪两下。闪一下的时候连手机,闪两下清码。 手机上打开易微联app,依次点击加号/轻智能遥控器/单按键遥控器/添加完成。 返回打开刚才添加的开关&a…