本人使用的服务器是2G2核 ubuntu22.04
前置工作
muduo库源码github仓库地址:
muduo
WIndows和Linux平台的boost源码包下载(zip是Windows版,tar.gz是Linux版,你也可以去boost官网下载最新版本)
Boost C++ Libraries
由于muduo网络库是基于boost的,所以我们需要先编译Boost。
Linux下编译boost库
如果你的资源服务器硬件资源比较好的话,直接按这个步骤来即可:施磊老师博客
如果你的服务器和我的一样配置比较烂,那么可以参考我的配置方案
众所周知,boost库是非常大的,如果我们之间进行编译耗时好比较久,所以我们先明确:muduo库也只依赖boost库的一部分,所以我们可以进行选择性的编译。步骤如下
1.下载和解压Boost库
首先我们需要从官网下载boost源码,我这里是1.82.0
然后进行解压:
tar -xzf boost_1_82_0.tar.gz
cd boost_1_82_0
2.初始化Boost构建系统
./bootstrap.sh
3.编译与Muduo相关的组建
./b2 --with-system --with-thread --with-date_time --with-regex
#限制并行编译任务数量 -j1 或者 -j2 跟你的cpu核心数有关
./b2 --with-system --with-thread --with-date_time --with-regex -j1
编译成功后会有以下打印:
4.安装库文件和头文件
使用 b2 工具的 install 命令将编译生成的 Boost 组件安装到系统目录。默认情况下,这些文件会安装到 /usr/local/include 和 /usr/local/lib。
sudo ./b2 install --with-system --with-thread --with-date_time --with-regex
5.安装库缓存
安装完成后,需要更新动态链接库缓存,以便系统能够找到新安装的库文件。执行以下命令:
sudo ldconfig
6.验证安装
验证头文件和库文件是否安装在正确的位置。头文件通常在 /usr/local/include/boost 目录下,库文件在 /usr/local/lib 目录下。
ls /usr/local/include/boost
ls /usr/local/lib | grep boost
然后创建cpp文件,并且使用g++进行编译,编译时可以指定头文件和库文件的路径,但是由于我们已经把他们放在了系统默认的头文件和库文件目录,所以不指定也是可以编译的,编译脚本如下:
g++ -I/usr/local/include -L/usr/local/lib -lboost_system -lboost_thread -lboost_date_time -lboost_regex your_program.cpp -o your_program
测试代码如下:
#include <iostream>
#include <boost/bind.hpp>
#include <string>
using namespace std;class Hello
{
public:void say(string name) { cout << name << " say: hello world!" << endl; }
};int main()
{Hello h;auto func = boost::bind(&Hello::say, &h, "zhang san");func();return 0;
}
运行打印如下:
zhang san say: hello world!
Linux下编译muduo库
直接看施磊老师的博客就好了:
C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装