[nghttp2]压测工具,源码编译并进行deb打包过程
编译环境:deepin 15.11桌面版
nghttp2下载地址:https://github.com/nghttp2/nghttp2
环境要求
emm只能在类Linux环境才能完整编译,想在Windows里面使用只能编译成dll,再进行引用开发使用,不能直接搞。
构建libnghttp2库需要一下包:
- pkg-config >= 0.20
要构建和运行单元测试曾想,需要以下包:
- cunit>=2.1
要构建文档,你需要安装:
- sphinx(http://sphinx-doc.org)
如果你只需要libnghttp2库,那么上面的软件包就是你需要安装的,使用--enable-lib-only ,以确保只有libnghttp2构建。这避免了与构建捆绑应用程序相关的潜在的构建错误。
要构建并运行应用程序(nghttp
,nghttpd
, nghttpx
和h2load
在)src
目录,需要以下包:
- OpenSSL> = 1.0.1
- libev> = 4.11
- zlib> = 1.2.3
- libc-ares> = 1.7.5
ALPN支持需要OpenSSL>=1.0.2(2015年1月22日发布),可以使用LibreSSL>=2.2.0代替OpenSSL,但在编写时OpenSSL比LibreSSL具有更多功能。
要启用-a
选项(从下载的资源获取链接的资源)nghttp
,需要以下包:
- libxml2> = 2.6.26
要在nghttpx中启用systemd支持,需要以下包:
- libsystemd-dev> = 209
HPACK工具需要以下包:
- jansson> = 2.5
要在examples目录下构建源代码,需要libevent:
- libevent-openssl> = 2.0.8
为了缓解长时间运行的服务器程序(nghttpd
和nghttpx
)中的堆碎片,建议使用jemalloc:
jemalloc
注意
由于受到限制,Alpine Linux目前不支持malloc替换。查看问题#762中的详细信息。
libnghttp2_asio C ++库需要以下包:
- libboost-dev> = 1.54.0
- libboost-thread-dev> = 1.54.0
Python绑定需要以下包:
- cython> = 0.19
- python> = 2.7
- python-setuptools
我的环境是DEEPIN基于Ubuntu,so属于‘大便’系列。
安装下面的这些需要的包吧
sudo apt-get install g++ make binutils autoconf automake autotools-dev libtool pkg-config \
zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
libc-ares-dev libjemalloc-dev libsystemd-dev \
cython python3-dev python-setuptools
要为nghttpx启用mruby支持,需要mruby。我们需要使用C ++ ABI明确打开来构建mruby,并且可能需要其他mrgem,mruby由第三方/ mruby目录下的git子模块管理。目前,默认情况下禁用对nghttpx的mruby支持。要启用mruby支持,请使用--with-mruby
configure选项。请注意,在撰写本文时,Debian / Ubuntu中的libmruby-dev和mruby包不能用于nghttp2,因为它们不启用C ++ ABI。要构建mruby,需要以下包:
- ruby
- bison
nghttpx支持OpenSSL / LibreSSL的永不过时的特权分离引擎。简而言之,当像Heartbleed这样的严重漏洞被利用时,它可以最大限度地降低私钥泄漏的风险。默认情况下禁用。要启用它,请使用--with-neverbleed
configure选项。
编译libnghttp2 C源代码需要C99编译器。已知gcc 4.8就足够了。为了编译C ++源代码,需要gcc> = 6.0或clang> = 6.0。C ++源代码需要C ++ 14语言功能。
注意:
要在nghttpx中启用mruby支持,请使用--with-mruby
configure选项。
注意
Mac OS X用户可能需要--disable-threads
configure选项来禁用nghttpd,nghttpx和h2load中的多线程以防止它们崩溃。欢迎使用补丁程序在Mac OS X平台上进行多线程处理。
注意
要编译关联的应用程序(nghttp,nghttpd,nghttpx和h2load),必须使用--enable-app
configure选项并确保满足上面指定的要求。通常,配置脚本检查所需的依赖项以构建这些应用程序,并--enable-app
自动启用,因此您不必显式使用它。但是,如果您发现应用程序未构建,那么使用--enable-app
可能会找到原因,例如缺少依赖项。
注意
为了检测第三方库,使用了pkg-config(但是我们不对某些库使用pkg-config(例如,libev))。默认情况下,pkg-config *.pc
在标准位置搜索文件(例如,/ usr / lib / pkgconfig)。如果需要*.pc
在自定义位置使用 文件,请指定PKG_CONFIG_PATH
环境变量的路径 ,并将其传递给configure脚本,如下所示:
$ ./configure PKG_CONFIG_PATH=/path/to/pkgconfig
对于pkg配置管理库,*_CFLAG
和*_LIBS
环境变量的定义(例如,OPENSSL_CFLAGS
, OPENSSL_LIBS
)。为这些变量指定非空字符串会完全覆盖pkg-config。换句话说,如果指定了它们,则不会将pkg-config用于检测,并且用户有责任为这些变量指定正确的值。有关这些变量的完整列表,请运行./configure -h
。
从发布tar存档构建nghttp2
nghttp2项目定期发布tar档案,其中包括nghttp2源代码和生成的构建文件。可以从“ 版本”页面下载它们。
从git构建nghttp2需要autotools开发包。从tar档案构建不需要它们,因此它更容易。通常的构建步骤如下:
$ tar xf nghttp2-XYZtar.bz2
$ cd nghttp2-XYZ
$ ./configure
$ make
从git构建
这是重点
sudo apt install auto-apt
#也可直接安装deb包
#http://mirrors.edge.kernel.org/ubuntu/pool/universe/a/auto-apt/auto-apt_0.3.24_amd64.deb
#木的办法,奇葩的事情总会有很多 sudo apt install checkinstall
sudo apt install libboost-dev
sudo apt install libboost-all-dev git submodule update --init
autoreconf -i
automake
autoconf auto-apt run ./configure --enable-app
make
sudo checkinstall -D -install=no --pkgversion=1.0 --pkgname=nghttp2-tools make install # 制作deb包
# 更多checkinstall用法请自行查找 #dpkg 安装deb包
dpkg -i package-file-name
#dpkg 卸载deb包
dpkg -P package-file-name
nghttp2官方文档
修改版本号
configure.ac文件
找到进行修改即可
AC_PREREQ(2.61)
AC_INIT([nghttp2], [1.40.0-DEV], [t-tujikawa@users.sourceforge.net])
deb包下载地址
https://github.com/landv/nghttp2/releases
https://github.com/landv/nghttp2/releases/download/v1.39.11/nghttp2-tools_1.0-1_amd64.deb
说白了还是不熟悉,如果对这些知识很熟悉,那就是信手捏来。
[nghttp2]压测工具,源码编译并进行deb打包过程的更多相关文章
- 源码编译mysql 5.5+ 安装过程全记录
前言:从mysql 5.5版本开始,mysql源码安装开始使用cmake了,编译安装跟以前的版本有点不一样了. 一,安装步骤: 1.安装前准备工作 a.下载mysql源代码包,到mysql下载页面选择 ...
- 压测工具wrk的编译安装与基础使用
Linux上编译安装: [root@centos ~]# cd /usr/local/src [root@centos ~]# yum install git -y [root@centos ~]# ...
- [软件测试]网站压测工具Webbench源码分析
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...
- 网站(Web)压测工具Webbench源码分析
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...
- Shell脚本一键部署——源码编译安装MySQL及自动补全工具
Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...
- DevExpress 14.2.3源码编译 z
一.准备 1.准备一台Windows 8.1机器,安装VS2013 2.准备一台Windows 8.1机器,安装VS2010 XP的系统肯定不行,因为有不少的运行库不支持 Windows ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- [Android Pro] Android源码编译之Nexus5真机编译
reference to : http://blog.csdn.net/liu1075538266/article/details/51272398 1. 前言 在Android安全的研究工作中, ...
- Http压测工具wrk使用指南
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
随机推荐
- 01-Javascript基础
一. JS介绍 JavaScript是前台语言 JavaScript是前台语言,而不是后台语言. JavaScript运行在用户的终端网页上,而不是服务器上,所以我们称为“前台语言”. JavaScr ...
- mysql 正确清理binlog日志的两种方法
前言: MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉 ...
- 黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )
转自https://blog.csdn.net/u010796875/article/details/17386131 一.执行有多行结果集的用ExecuteReader SqlDateReader ...
- Codeforces 760C:Pavel and barbecue(DFS+思维)
http://codeforces.com/problemset/problem/760/C 题意:有n个盘子,每个盘子有一块肉,当肉路过这个盘子的时候,当前朝下的这一面会被煎熟,每个盘子有两个数,p ...
- docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)
本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...
- Maxon Cinema 4D Studio R20.026 中文破解版下载
Maxon Cinema 4D Studio,是 Maxon 公司开发的一款专业三维工具包,如果你需要一个得力助手,轻松快速创建令人称赞的 3D 图形作品,那么这是你的最佳选择. 为何使用Cinema ...
- C# Linq 笛卡尔积
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 数据结构丨N叉树
遍历 N叉树的遍历 树的遍历 一棵二叉树可以按照前序.中序.后序或者层序来进行遍历.在这些遍历方法中,前序遍历.后序遍历和层序遍历同样可以运用到N叉树中. 回顾 - 二叉树的遍历 前序遍历 - 首先访 ...
- cogs 2320. [HZOI 2015]聪聪的世界题解
2320. [HZOI 2015]聪聪的世界 时间限制:6 s 内存限制:512 MB [题目描述] 背景: 聪聪的性取向有问题. 题目描述: 聪聪遇到了一个难题: 给出一个序列a1…an,完成以 ...
- [原创]自动化部署K8S(v1.10.11)集群
标准运维实现自动化部署K8S集群主要分两步,第一步是部署gse-agent,拱第二步执行部署. 第一步:部署gse-agent.如下: 第二步:部署k8s集群.主要通过作业平台分为5小步执 ...