ubuntu 安装 evpp

来源 https://www.cnblogs.com/wisdomyzw/p/9402440.html

Ubuntu虚拟机安装开源库evpp说明:

EVPP为奇虎360基于libevent开发的现代化的支持C++11特性的高性能网络库,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库。拥有如下特性:

* 现代版的C++11接口
* 非阻塞异步接口都是C++11的functional/bind形式的回调仿函数(不是libevent中的C风格的函数指针)
* 非阻塞纯异步多线程TCP服务器/客户端
* 非阻塞纯异步多线程HTTP服务器/客户端
* 非阻塞纯异步多线程UDP服务器
* 支持多进程模式
* 优秀的跨平台特性和高性能(继承自libevent的优点)

evpp的编译需要依赖如下动态库, 分别介绍如下:

libevent  glog  gtest  gflags  boost evpp

linevent:
 1、window访问: http://libevent.org/libevent-2.0.22.tar.gz, 拷贝到linux机器上
 (或者了Linux wget http://libevent.org/libevent-2.0.22.tar.gz)
 2、tar -zxvf libevent-2.0.22-stable.tzr.gz
 3、cd libevent-2.0.22-stable
 4、./configure --prefix=/usr
 5、make
 6、sudo make install
 7、检查是否安装成功, ls -al /usr/lib | grep libevent

glog:
 1、下载源码: git clone https://github.com/google/glog
 (git clone下载慢可以参考:
  ubuntu上解决访问github慢的方法:
  1、进入终端命令行模式,输入sudo vi /etc/hosts
  2、输入i进入编辑命令,英文输入法输入G,vim编辑器跳到hosts文件的最后一行
  3、用浏览器访问 IPAddress.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址
  4、在vi打开的hosts文件中添加如下格式:
   192.30.253.112 github.com
   151.101.44.249  github.global.ssl.fastly.net
  5、esc退出编辑模式,输入:wq,保存hosts文件,修改hosts结束
  6、更新DNS缓存,输入sudo /etc/init.d/networking restart
 )
 2、配置: sudo apt-get install autoconf automake libtool
 3、编译安装:
  进入源码根目录(glog文件夹)
  ./autogen.sh
  ./configure
  make -j 24
  sudo make install

gflags:
 1、下载源码:git clone https://github.com/gflags/gflags
 2、编译安装:
  进入源码目录(即gflags文件夹)
  cmake .
  make -j 24
  sudo make install

gtest:
 1、安装源代码:sudo apt-get install libgtest-dev
 2、编译源代码:
  cd /usr/src/gtest
  $ sudo mkdir build
  $ cd build
  $ sudo cmake ..
  $ sudo make
 3、拷贝生成的库到系统目录下(将生成的libgtest.a 和 libgtest_main.a 拷贝到系统的lib路径下.):
  $ sudo cp libgtest*.a /usr/local/lib

boost:
 使用apt-get直接进行安装: sudo apt-get install libboost-dev
  (这个安装成功了,但是使用失败,应该是包不全,没有boost_system与boost_thread等)
  
 1、下载安装包源码:
  https://www.boost.org/users/download/
 2、解压编译:
  tar -zxvf boost_1_67_0.tar.gz
  cd boost_1_67_0
  ./bootstrap.sh(不用加 --prefix=dir,会默认安装到/usr/local/目录下,成功会生成b2可执行文件)
  
  sudo ./b2 install(时间较长,20分钟)

evpp:
 1、下载源码与子模块源码:
  $ git clone https://github.com/Qihoo360/evpp
  $ cd evpp
  $ git submodule update --init --recursive
 2、编译源码:
  $ mkdir -p build && cd build
  $ cmake -DCMAKE_BUILD_TYPE=Debug ..
  $ make -j(不需要并行编译,直接make就好了,我用make -j的时候虚拟机挂了两次)
 3、运行用例:
  $ make test(这个会跑unittest用例,需要3~5分钟后)
  $ cd evpp/build/bin
  * Run a HTTP client example:

  $ ./example_http_client_request01
  WARNING: Logging before InitGoogleLogging() is written to STDERR
  I0306 11:45:09.464159 13230 inner_pre.cc:37] ignore SIGPIPE
  I0306 11:45:09.464896 13230 client01.cc:30] Do http request
  I0306 11:45:09.493073 13231 client01.cc:14] http_code=200 [ok]
  I0306 11:45:09.493124 13231 client01.cc:16] HTTP HEADER Connection=close
  I0306 11:45:09.493242 13231 event_loop.cc:103] EventLoop is stopping now, tid=140722561709824
  I0306 11:45:09.993921 13231 event_loop.cc:93] EventLoop stopped, tid: 140722561709824
  I0306 11:45:09.994107 13230 client01.cc:38] EventLoopThread stopped.

*** Run a HTTP server example:
    $ ./example_httpecho
  WARNING: Logging before InitGoogleLogging() is written to STDERR
  I0306 12:15:31.703927 21228 inner_pre.cc:37] ignore SIGPIPE
  I0306 12:15:31.706221 21228 http_server.cc:99] http server is running
  *** And in another console(模拟客户端,要在服务器运行的时候):
    $ curl "http://127.0.0.1:9009/echo" -d "Hello, world"
    ello, world

*Run a TCP echo server example:
     $ ./example_tcpecho
  * And in another console(模拟客户端,要在服务器运行的时候):
    $ telnet 127.0.0.1 9099
  Trying 127.0.0.1...
  Connected to 127.0.0.1.
  Escape character is '^]'.

================= End

ubuntu 安装 evpp的更多相关文章

  1. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  2. ubuntu安装mysql

    好记性不如烂笔头,记录一下,ubuntu安装mysql的指令. 安装MySQL: sudo apt-get install mysql-server sudo apt-get install mysq ...

  3. ubuntu安装vim时提示 没有可用的软件包 vim,但是它被其它的软件包引用了 解决办法

    ubuntu安装vim时提示 没有可用的软件包 vim-gtk3,但是它被其它的软件包引用了 解决办法 本人在ubuntu系统安装vim  输入 sudo apt-get install vim 提示 ...

  4. docker 1.8+之后ubuntu安装指定版本docker-engine

    这边记录ubuntu安装过程,首先是官网文档 If you haven’t already done so, log into your Ubuntu instance. Open a termina ...

  5. debian/ubuntu安装桌面环境

    apt-get install xorg apt-get install gnome 然后startx ubuntu 安装Gnome桌面 1.安装全部桌面环境,其实Ubuntu系列桌面实际上有几种桌面 ...

  6. 一个ubuntu phper的自我修养(ubuntu安装)

    ubuntu安装篇 一.ubuntu下载 到ubuntu官网下载适合自己电脑配置的系统版本,此处不做展开. 二.制作USB启动盘 在windows下制作USB启动盘,工具是universal usb ...

  7. ubuntu 安装JAVA jdk的两种方法:

    ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用pp ...

  8. [其他]Ubuntu安装genymotion后unable to load VirtualBox engine

    问题: Ubuntu安装genymotion后unable to load VirtualBox engine 解决办法: 如果没有安装VirtualBox,要先安装VirtualBox. 安装Vir ...

  9. Ubuntu安装出现左上角光标一直闪解决方式

    Ubuntu安装出现左上角光标一直闪解决方式: 01下载ubunu http://cn.ubuntu.com/download/ 02.软碟通 http://pan.baidu.com/s/1qY8O ...

随机推荐

  1. git clone 指定分支

    使用Git下载指定分支命令为:git clone -b 分支名仓库地址 克隆asp.net core 2.1.6版本 git clone -b 2.1.6 https://github.com/asp ...

  2. python3爬取网页图片路径并写入文件

    import reimport urllib.request # 获取网页文件def getHtml(url): response = urllib.request.urlopen('https:// ...

  3. Entity Framework (EF) Core工具创建一对多和多对多的关系

     一. EntirtyFramework(EF)简介 EntirtyFramework框架是一个轻量级的可扩展版本的流行实体框架数据访问技术,微软官方提供的ORM工具让开发人员节省数据库访问的代码时间 ...

  4. git 取消对某个文件的跟踪

    git rm --cached <fileName> 例如 : git add 后,不想提交在status里的.idea/vcs.xml.操作如下:

  5. .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比

    Pop分组模式和表格模式对比 关键词: 驰骋工作流引擎  表单引擎  ccflow   .net开源工作流  jflow Java工作流引擎 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 a ...

  6. .net解析csv(C#导表工具)

    前言 解析Excel有知名的NPOI库,(Java语言是POI),但是NPOI是不支持解析csv的. csv本质上也是文本文件,可以进行差异对比,更利于解决冲突. 本文对解析csv的几个.net的开源 ...

  7. 【心得】Lattice和Xilinx工具关键特性对比(Diamond、ISE)

    [博客导航] [导航]FPGA相关 背景 由于项目需要,初次接触Diamond,发现跟之前的ISE有很多不同,记录下一些体会,供参考.按开发流程,将一些常用的特性进行对比,列举如下: IP Core管 ...

  8. SpringBoot中集成Swagger2

    1.依赖jar <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...

  9. nginx学习路线

    nginx:熟透,配置.rewrite.黑白名单.脚本.代理.优化等

  10. selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据

    简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...