【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

编译成功后会有以下打印:

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网络库源码编译安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统&#xff08;二&#xff09; 资源…

网络原理-TCP/IP --传输层(UDP)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…

CANDela studio新建和编辑服务

服务定义和编辑只能够在CDDT里面进行&#xff0c;思路分为三步&#xff1a; 1、Protocol Services里面添加服务&#xff0c;定义服务的格式、请求和正负响应。 2、根据服务的功能归类到Diagnostic Class Tenplates 3、Variant里面的Supported Diagnostic Classes勾选 然后我…

【2023百度之星初赛】跑步,夏日漫步,糖果促销,第五维度,公园,新材料,星际航行,蛋糕划分

目录 题目&#xff1a;跑步 思路&#xff1a; 题目&#xff1a;夏日漫步 思路&#xff1a; 题目&#xff1a;糖果促销 思路&#xff1a; 题目&#xff1a;第五维度 思路&#xff1a; 题目&#xff1a;公园 思路&#xff1a; 新材料 思路&#xff1a; 星际航行 思路…

Ubuntu基础使用

快捷键&#xff1a; 命令行打开快捷方式&#xff1a;Ctrl Alt T Ctrl l 清屏 截屏&#xff1a; LinuxOS命令&#xff1a; 显示当前工作目录所有内容&#xff1a;ls &#xff08;-a -l、-lh&#xff09; -a 输入全部内容&#xff08;包括隐藏文件&#xff09; -l 竖向展示…

CompassArena 司南大模型测评--代码编写

测试角度 要说测试模型&#xff0c;对咱们程序员来说&#xff0c;那自然是写代码的能力强不强比较重要了。那么下面我们以 leetcode 中的一道表面上是困难题的题目来考考各家大模型&#xff0c;看看哪个才应该是咱们日常写程序的帮手。 部分模型回答 问题部分如下截图&#…

Linux前奏-预热版本

一、操作系统概述 1.1 了解操作系统的作用 我们所熟知的计算机&#xff0c;也就是电脑&#xff0c;就是由硬件和软件来组成的 硬件&#xff1a;计算机系统中由电子机械&#xff0c;和各种光电元件等组成的各种物理装置的总称 软件是什么呢&#xff1f; 软件&#xff1a;用…

调查问卷和考试系统SurveyKing

什么是 SurveyKing &#xff1f; SurveyKing 是功能更强大的调查问卷、考试系统&#xff0c;很多功能体验超过问卷网、问卷星。支持在线考试/调查问卷/公开查询/题库刷题/投票。 软件特性 &#x1f947; 支持 20 多种题型&#xff0c;如填空、选择、下拉、级联、矩阵、分页、签…

QiuDN:新手友好的公益CDN

在数字化的今天&#xff0c;网站的速度将直接影响着用户体验和搜索引擎排名&#xff0c;因此&#xff0c;作为一名网站管理员&#xff0c;我一直在寻找能够提升网站速度的解决方案。在一次偶然的机会中&#xff0c;我了解到了QiuDN&#xff0c;一个公益性质的CDN。听创始人称丘…

Vue3-Ref Reactive toRef toRefs对比学习

响应式数据&#xff1a; Ref 作用&#xff1a;定义响应式变量。 语法&#xff1a;let xxx ref(初始值)(里面可以是任何规定内类型、数组等)。 返回值&#xff1a;一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的。 注意点&am…

使用Python库Matplotlib绘制常用图表类型

使用Python库Matplotlib绘图 一、Matplotlib绘图参数设置1.1 设置分辨率和画布大小1.2 保存图片并设置边缘留白为紧凑型1.3 设置坐标轴标签1.4 画直线设置线宽和颜色1.5 画子图1.5.1 通过figure的add_subplot()画子图1.5.2 通过plt的subplots画子图 二、使用Matplotlib中scatte…

深入解析芯片背后的技术:揭开半导体产业的神秘面纱

引言&#xff1a; 在这个数字化、信息化的时代&#xff0c;芯片已经成为了现代科技发展的重要基石。从智能手机、电脑到汽车、物联网设备&#xff0c;芯片无处不在。然而&#xff0c;对于大多数人来说&#xff0c;芯片背后的技术仍然是一个神秘而遥不可及的领域。本文将深入解…

【Linux-阻塞,非阻塞,异步】

Linux-阻塞&#xff0c;非阻塞&#xff0c;异步 ■ Linux-阻塞-非阻塞 IO-异步■ Linux-阻塞IO■ 阻塞IO简介■ open■ 等待队列■ 示例一&#xff1a;APP阻塞IO读取进入睡眠后-等待队列唤醒进程■■ ■ Linux-非阻塞IO■ 非阻塞IO简介■ open■ 轮询■ 1、select 函数■ 2、po…

python-双胞胎字符串

[问题描述]&#xff1a;给定两个字符串s和t&#xff0c;每次可以任意交换s的奇数位和偶数位的字符&#xff0c;即奇数位的字符可以与任意其它奇数位的字符交换&#xff0c;偶数位的字符同样也可以与任意偶数位的字符的字符交换&#xff0c;问能否在有限的次数的交换下使s变为t?…

智能售货机加盟新契机

加盟智能售货机业务&#xff0c;尤其是在当前技术迭代迅速与市场需求高涨的背景下&#xff0c;正成为众多创业者积极探索的领域。以重庆臻奶惠为代表的企业&#xff0c;正利用其在智能科技与支付资讯的深厚底蕴&#xff0c;为有意涉足该行业的加盟者铺设了一条既稳健又具前瞻性…

2024年5月31日 (周五) 叶子游戏新闻

《Granblue Fantasy: Relink》版本更新 新增可操控角色及功能世嘉股份有限公司现已公开《Granblue Fantasy: Relink》&#xff08;以下简称 Relink&#xff09;免费版本更新ver.1.3.1于5月31日&#xff08;周五&#xff09;上线的消息。该作是由Cygames Inc.&#xff08;下称Cy…

【CTF Web】BUUCTF BUU LFI COURSE 1 Writeup(代码审计+PHP+文件包含漏洞)

BUU LFI COURSE 1 1 点击启动靶机。 解法 <?php /*** Created by PhpStorm.* User: jinzhao* Date: 2019/7/9* Time: 7:07 AM*/highlight_file(__FILE__);if(isset($_GET[file])) {$str $_GET[file];include $_GET[file]; }如果GET请求中接收到file参数&#xff0c;就会…

刷代码随想录有感(87):贪心算法——K次取反后的最大化数组和

题干&#xff1a; 代码&#xff1a; class Solution { public:static bool cmp(int a, int b){return abs(a) > abs(b);}int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(), nums.end(), cmp);for(int i 0; i < nums.size(); i){…

使用clip模型计算图文相似度

使用clip模型计算图文相似度 clip模型模型架构训练过程应用场景clip安装 计算图文相似度 clip模型 CLIP (Contrastive Language-Image Pretraining) 是由 OpenAI 开发的一种深度学习模型&#xff0c;旨在将自然语言处理和计算机视觉任务结合起来。它通过一种名为对比学习&…

Springboot+vue二手房交易管理系统

Springbootvue二手房交易管理系统&#xff0c;项目用mybatis与数据库&#xff0c;数据库为mysql&#xff0c;16个表结构。有问题直接加我询问&#xff0c;我会一直在线哒。 功能如下&#xff1a; 房东管理 用户管理 房源信息管理&#xff08;可预约和查看评论&#xff09; 看房…