一、源码下载

Chromium 源码本身非常大,加之国内由于墙的存在,导致源码的下载难上加难。因此,本文直接使用文章:如何下载Google Chromium源码 提供的源码,百度网盘下载链接:https://pan.baidu.com/s/1UCi4blsdGrqHQRRIcYnW6w ,提取码:s4yr。
链接中包含8个 chromium.tar.gz* 文件和1个 depot_tools.tar.gz,前者即为 Chromium 分片后的源码,后者为 Google 代码管理工具包。

chromium.tar.gz* 下载完毕后,需要先合并,再解压:

cat chromium.tar.gz* >> chromium.tar.gz

链接中所使用的的 QUIC 版本号为 46(非 Chromium 的版本号),具体可以查看文件:chromium/src/net/third_party/quic/core/quic_versions.cc:

二、depot_tools 配置

将 depot_tools 根目录添加至 PATH:

export PATH=$PATH:/path/to/depot_tools

三、安装所需的依赖项

cd chromium/src
build/install-build-deps.sh

四、编译 quic-sever / quic-client 工程

4.1、配置编译参数

使用如下命令,生成编译参数配置脚本文件:

cd chromium/src
gn args out/Default

命令执行后,会新建文件:out/Default/args.gn,并进入文本编辑模式。若对编译配置无特殊要求,则可直接保存退出。
退出之后,编译系统会根据 args.gn 自动生成ninja文件。

若后续需修改编译参数,则在编辑 args.gn 后,执行如下命令,即可重新生成 ninja 文件。

gn gen out/Default

4.2、编译

使用如下命令编译quic_server / quic_client模块:

ninja -C out/Default quic_server quic_client

编译成功后,out/Default 目录下回生成 quic_server 和 quic_client 可执行文件。

4.3、基于HTTP封装的 QUIC 协议测试

本文测试方案,是根据文档:Playing with QUIC 来展开的。

4.3.1、测试数据准备
  • 由于工作使用的开发环境位于内网,因此需首先在外网准备好测试数据。Win10终端执行如下命令:
./wget -p --save-headers https://www.example.org

命令执行完毕后,会在当前目录下生成一个文件夹:www.example.org,其中只包含一个名为 index.html 的文件。

  • 修改 index.html,删掉标签:“doctype html”,并新增行:
X-Original-Url: https://www.example.org/

  • 在内网新建目录:/tmp/quic-data,并将前一步修改后的整个 www.example.org 目录拷贝到 /tmp/quic-data 目录下。
4.3.2、生成秘钥
apt install libnss3-toolscd chromium/src/net/tools/quic/certs
./generate-certs.sh
4.3.3、测试

运行 quic_server:

cd chromium/src./out/Default/quic_server --quic_response_cache_dir=/tmp/quic-data/www.example.org --certificate_file=net/tools/quic/certs/out/leaf_cert.pem --key_file=net/tools/quic/certs/out/leaf_cert.pkcs8

运行 quic_client:

cd chromium/src./out/Default/quic_client  --host=127.0.0.1 --port=6121 https://www.example.org/

若无异常,则 quic_client 执行后,会输出如下命令:

注意:
quic_server 的默认监听端口为 6121,quic_client 的默认请求端口为 80,两者均可通过选项 “–port=监听/请求端口号” 进行个性化配置。

4.3.4、故障排查

若命令quic_server 或 quic_client在执行过程中出现异常,则可通过增加运行参数“–v=1”,来打印详细调试日志信息。

4.4、模拟 SOCKET 的 QUIC 数据接发

若要模拟 SOCKET 的 QUIC 数据接发,则可借助 Quartc 相关的测试用例。(Quartc 无需配置SSL加密证书)

4.4.1、编译 net_unittests
cd chromium/srcninja -C out/Default/ net_unittests

QUIC linux编译相关推荐

  1. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  2. linux 编译c_含有CGO代码的项目如何实现跨平台编译

    目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...

  3. linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接

    大家肯定都知道计算机程序设计语言通常分为机器语言.汇编语言和高级语言三类.高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类 ...

  4. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果

    # 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...

  5. centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...

    一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c  -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...

  6. linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...

  7. linux libvpx编译安装,linux编译安装时常见错误解决办法

    **configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution** 复 ...

  8. linux编译安装的好处,Linux学习—源码安装

    源码安装--可以按照自己的需求安装,这是源码安装的好处,而二进制安装无法选择 大部分的源码安装步骤大致相同,具体细节可以参考解压缩之后的README和INSTALL README: 介绍了软件包的功能 ...

  9. 如何对linux文件进行编译,linux编译和执行命令都有哪些?该如何实现?

    我们知道,Linux是比如手机.平板电脑.路由器.台式计算机计算机设备的核心,它们都使用着Linux系统.以现在来说,一个合格的开发者必须要对Linux有一定的了解,那么,下面就跟小编一起来看看Lin ...

最新文章

  1. Ubuntu16.04安装ROS时,sudo rosdep init报错,Error: cannot download default sources list from:
  2. redis 集群讲解
  3. 在GWT中序列化/反序列化Json
  4. 24个坏行为让你身体越来越丑
  5. 网络映射连接不上_Mac连接不上无线网络的解决方法
  6. 设计模式--观察者模式与命令模式
  7. ORB_SLAM2+ZED 2
  8. opencv 指定分辨率_使用opencv拉伸图像扩大分辨率示例
  9. 《嵌入式 – GD32开发实战指南》第1章 开发环境搭建
  10. Python程序设计题库
  11. UniApp开发社交社区
  12. 战略设计部分:业务领域定义
  13. 《大咖讲Wireshark网络分析》—再来一个很妖的问题
  14. 运用计算机巧记英语词汇,词根词缀法巧记考研英语词汇:词根graph-(写)
  15. Java短信确认机制_JAVA 消息确认机制之 ACK 模式
  16. Unity+高通Vuforia SDK——AR
  17. STM32的中断优先级说明(抢占式与响应式优先级)
  18. Python:time, strftime和strptime
  19. 7个程序员常用的接单平台推荐
  20. 联想Y410pY510p外置显卡Vbios,Y400Y500外置显卡VBIOS, ULTRABAY白名单,卡白名单。

热门文章

  1. 如何制作一份完美的Facebook广告文案?让你的广告一炮而红!
  2. 密码学笔记——维吉尼亚密码
  3. 《七天数据可视化之旅》第七天:可视化设计实战-数据大屏
  4. 拼多多店铺日销量100+怎么实现?直通车怎么开?
  5. 中资美元债这么膨胀,个人投资者怎么买?
  6. 网站被降权了怎么办?被降权后的正确处理方法
  7. 4.3.1 管道翻模
  8. 一文告诉你哪些map element类型支持就地更新
  9. python输入n个数、输出最小的数字_程序查找最少的斐波纳契数以在Python中加到n?...
  10. GetDC() ReleaseDC()引起的内存泄漏