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 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> muduo库的安装使用 -> 正文阅读

[系统运维]muduo库的安装使用

今天开始了陈硕大大的《linux多线程服务端编程》之旅,进行muduo网络库的学习,这里主要记录一下在win11下WSL的ubuntu子系统中进行的muduo的安装。
首先,由于muduo是采用cmake作为build system,所以先要安装cmke,另外由于muduo依赖于Boost(核心库依赖TR1),所以Boost也一并安装了。

sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-test-dev

然后就开始安装muduo吧,书本中介绍muduo原本是在google的代码托管平台进行存放,其实现在已经转移到了github上,所以只需要使用git来客隆一下即可(安装git其实很简单,大家可以百度一下就知道了,这里不做详述)

sudo git clone https://github.com/chenshuo/muduo

因为git的clone命令如果没指定路径,是会把当前目录作为目的路径的,所以我切换到了其他路径,由于权限需要,就使用sudo暂时提升一下权限,搞定以后,就可以看到当前目录下的muduo目录,进入muduo目录,输入./build.sh开始构建,不过它显示ln -sf B U I L D D I R / BUILD_DIR/ BUILDD?IR/BUILD_TYPE-cpp11/compile_commands.json和mkdir执行被拒,即permission dennied,这下头疼了,只好进行build.sh脚本的命令修改,在这两个命令和后面的cmake命令和make命令都添加sudo前缀,这样执行就不会有问题了。
如下:

#!/bin/sh

set -x

SOURCE_DIR=`pwd`
BUILD_DIR=${BUILD_DIR:-../build}
BUILD_TYPE=${BUILD_TYPE:-release}
INSTALL_DIR=${INSTALL_DIR:-../${BUILD_TYPE}-install-cpp11}
CXX=${CXX:-g++}

sudo ln -sf $BUILD_DIR/$BUILD_TYPE-cpp11/compile_commands.json

sudo mkdir -p $BUILD_DIR/$BUILD_TYPE-cpp11 \
  && cd $BUILD_DIR/$BUILD_TYPE-cpp11 \
  && sudo cmake \
           -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
           -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
           -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
           $SOURCE_DIR \
  && sudo make $*

# Use the following command to run all the unit tests
# at the dir $BUILD_DIR/$BUILD_TYPE :
# CTEST_OUTPUT_ON_FAILURE=TRUE make test

# cd $SOURCE_DIR && doxygen

不过,./build.sh执行完毕,只在/usr/include/build目录中找到release目录(内含bin目录和lib目录,即可执行文件和静态库文件),并没有我们需要的头文件和库文件,回头看书,发现应该执行./build.sh install命令才有想要的release-install目录,但是执行时cmake报错了,为何?因为它找不到protobuf和curl的依赖,哦豁,忘记安装了

sudo apt-get install libcurl4-openssl-dev libc-ares-dev
sudo apt-get install protobuf-compiler libprotobuf-dev

这样一来,就基本编译好了我们需要的头文件和库文件了,让我们运行一下看看,切换到release-cpp11(我们生成的build目录下,即前面说的release目录,这个名字应该是更新了c++11标准)的bin目录下,运行一下测试程序inspector_test

jack@DESKTOP-SJO8SMG:/usr/include/build/release-cpp11/bin$ ./inspector_test
20211210 14:43:57.949897Z  4627 WARN  HttpServer[Inspector:test] starts listening on 0.0.0.0:12345 - HttpServer.cc:53

应该可以得到上面的响应,然后我们在浏览器访问本地ip的12345端口(http://127.0.0.1:12345/)应该可以得到以下界面
在这里插入图片描述
然后我们的服务器程序响应如下:

20211210 14:45:09.441062Z  4627 INFO  TcpServer::newConnection [Inspector:test] - new connection [Inspector:test-0.0.0.0:12345#1] from 127.0.0.1:33248 - TcpServer.cc:80
20211210 14:45:09.441768Z  4627 INFO  TcpServer::newConnection [Inspector:test] - new connection [Inspector:test-0.0.0.0:12345#2] from 127.0.0.1:33250 - TcpServer.cc:80
20211210 14:47:20.255819Z  4627 INFO  TcpServer::removeConnectionInLoop [Inspector:test] - connection Inspector:test-0.0.0.0:12345#2 - TcpServer.cc:109

这样应该就ok了。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 16:07:48  更:2021-12-11 16:08:59 
 
开发: 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年11日历 -2024/11/16 4:30:55-

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