嚴華 发表于 2024-6-24 19:46:19

【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源

本人利用的服务器是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
编译成功后会有以下打印:
https://img-blog.csdnimg.cn/direct/50f3cc6f66a549758a7312534f0b7e47.png#pic_center
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网络库源码编译安装

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源