当前位置: 首页 > news >正文

CentOS 7 使用异步网络框架Libevent

CentOS 7 安装Libevent库

libevent github地址:https://github.com/libevent/libevent

步骤1:首先,你需要下载libevent的源代码。你可以从github或者源代码官方网站下载。并上传至/usr/local/source_code/   

步骤2:下载完成后,需要将源代码解压,可以使用以下命令:

[root@localhost source_code]# tar -zxvf libevent-2.1.12-stable.tar.gz

 步骤3:解压后,切换到源代码目录: 

[root@localhost source_code]# cd libevent-2.1.12-stable

 步骤4:生成cJSON动态/静态库,执行如下指令: 

[root@localhost libevent-2.1.12-stable]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU
******
[root@localhost libevent-2.1.12-stable]# makeGEN      test/rpcgen-attemptedGEN      include/event2/event-config.h
make  all-am
make[1]: 进入目录“/usr/local/source_code/libevent-2.1.12-stable”CC       sample/dns-example.oCC       buffer.loCC       bufferevent.loCC       bufferevent_filter.lo
******
[root@localhost libevent-2.1.12-stable]# sudo make install
make  install-am
make[1]: 进入目录“/usr/local/source_code/libevent-2.1.12-stable”
make[2]: 进入目录“/usr/local/source_code/libevent-2.1.12-stable”/usr/bin/mkdir -p '/usr/local/bin'/usr/bin/install -c event_rpcgen.py '/usr/local/bin'/usr/bin/mkdir -p '/usr/local/lib'
****

 

遇到的问题及解决办法

编译执行./test_libevent,提示如下截图错误信息:

产生原因:在运行时,程序无法找到libevent-2.1.so.7这个动态库,因为该动态库在默认安装时,存放的路径在/usr/local/lib下,不在系统的默认查找路径内。

解决办法:

[root@localhost libevent_demo]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/openssl/lib
/usr/local/openssl/lib
[root@localhost libevent_demo]# echo "/usr/local/lib" >> /etc/ld.so.conf
[root@localhost libevent_demo]# sudo ldconfig

 Libevent 之Hello World

在/usr/local/source_code 新增 libevent_demo目录并新增 test_libevent.cpp文件,文件内容如下:

#include <event2/event.h>
#include <iostream>
#include <string>
void timer_cb(evutil_socket_t fd, short what, void *arg)
{auto str = static_cast<std::string *>(arg);std::cout << *str << std::endl;
}
int main()
{std::string str = "Hello, World!";auto *base = event_base_new();struct timeval five_seconds = {1, 0};auto *ev = event_new(base, -1, EV_TIMEOUT, timer_cb, (void *)&str);event_add(ev, &five_seconds);event_base_dispatch(base);event_free(ev);event_base_free(base);return 0;
}

编译源码并执行:

[root@localhost libevent_demo]# g++ test_libevent.cpp -o test_libevent -levent
[root@localhost libevent_demo]# ./test_libevent
Hello, World!

Libevent 参考资料:

libevent GitHub地址:https://github.com/libevent/libevent

libevent 编程指南: https://senlinzhan.github.io/2017/08/12/libevent/ 

libevent 深入浅出:https://aceld.gitbooks.io/libevent/content/ 

相关文章:

CentOS 7 使用异步网络框架Libevent

CentOS 7 安装Libevent库 libevent github地址&#xff1a;https://github.com/libevent/libevent 步骤1&#xff1a;首先&#xff0c;你需要下载libevent的源代码。你可以从github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2&#xff1a;下载完成后&…...

枚举 B. Lorry

Problem - B - Codeforces 题目大意&#xff1a;给物品数量 n n n&#xff0c;体积为 v ( 0 ≤ v ≤ 1 e 9 ) v_{(0 \le v \le 1e9)} v(0≤v≤1e9)​&#xff0c;第一行读入 n , v n, v n,v&#xff0c;之后 n n n行&#xff0c;读入 n n n个物品&#xff0c;之后每行依次是体…...

ON1 Photo RAW 2024 for Mac——专业照片编辑的终极利器

ON1 Photo RAW 2024 for Mac是一款专为Mac用户打造的照片编辑器&#xff0c;以其强大的功能和易用的操作&#xff0c;让你的照片编辑工作变得轻松愉快。 一、强大的RAW处理能力 ON1 Photo RAW 2024支持大量的RAW格式照片&#xff0c;能够让你在编辑过程中获得更多的自由度和更…...

从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式

从word复制内容到wangEditor富文本框的时候会把html标签也复制过来&#xff0c;如果只想实现直接复制纯文本&#xff0c;有什么好的实现方式&#xff1f; 将 Word 中的内容复制到富文本编辑器时&#xff0c;常常会带有大量的 HTML 标签和样式&#xff0c;这可能导致不必要的格式…...

项目中如何配置数据可视化展现

在现今数据驱动的时代&#xff0c;可视化已逐渐成为数据分析的主要途径&#xff0c;可视化大屏的广泛使用便应运而生。很多公司及政务机构&#xff0c;常利用大屏的手段展现其实力或演示业务&#xff0c;可视化的效果能让观者更快速的理解结果并直观的看到数据展现。因此&#…...

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用 HarmonyOS,作为一款全场景分布式操作系统,为了推动更广泛的应用开发,采用了一种先进而灵活的编程语言——ArkTS。ArkTS是在TypeScript(TS)的基础上发展而来,为HarmonyOS提供了丰富的应用开发工具,使开…...

大语言模型概述(三):基于亚马逊云科技的研究分析与实践

上期介绍了基于亚马逊云科技的大语言模型相关研究方向&#xff0c;以及大语言模型的训练和构建优化。本期将介绍大语言模型训练在亚马逊云科技上的最佳实践。 大语言模型训练在亚马逊云科技上的最佳实践 本章节内容&#xff0c;将重点关注大语言模型在亚马逊云科技上的最佳训…...

键入网址到网页显示,期间发生了什么?

文章目录 键入网址到网页显示&#xff0c;期间发生了什么&#xff1f;1. HTTP2. 真实地址查询 —— DNS3. 指南好帮手 —— 协议栈4. 可靠传输 —— TCP5. 远程定位 —— IP6. 两点传输 —— MAC7. 出口 —— 网卡8. 送别者 —— 交换机9. 出境大门 —— 路由器10. 互相扒皮 —…...

深度学习基于Python+TensorFlow+Django的水果识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介技术组合系统功能使用流程 二、功能三、系统四. 总结 一项目简介 # 深度学习基于PythonTensorFlowDjango的水果识别系统介绍 简介 该水果识别系统基于…...

vs动态库生成过程中还存在静态库

为什么VS生成动态库dll同时还会生成lib静态库 动态库与静态库&#xff08;Windows环境下&#xff09; ​ 动态库和静态库都是一种可执行代码的二进制形式&#xff0c;可以被操作系统载入内存执行。 ​ 静态库实际上是在链接时被链接到exe的&#xff0c;编译后&#xff0c;静态…...

P13 C++ 类 | 结构体内部的静态static

目录 01 前言 02 类内部创建静态变量的例子 03 在类的内部创建静态变量的作用 04 最后的话 01 前言 本期我们讨论 static 在一个类或一个结构体中的具体情况。 在几乎所有面向对象的语言中&#xff0c;静态在一个类中意味着特定的东西。这意味着在类的所有实例中&#xff…...

【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB在实战项目中替换Milvus测试

为什么尝试使用Tencent Cloud VectorDB替换Milvus向量库&#xff1f; 亮点&#xff1a;Tencent Cloud VectorDB支持Embedding&#xff0c;免去自己搭建模型的负担&#xff08;搭建一个生产环境的模型实在耗费精力和体力&#xff09;。 腾讯云向量数据库是什么&#xff1f; 腾…...

git clone -mirror 和 git clone 的区别

目录 前言两则区别git clone --mirrorgit clone 获取到的文件有什么不同瘦身仓库如何选择结语开源项目 前言 Git是一款强大的版本控制系统&#xff0c;通过Git可以方便地管理代码的版本和协作开发。在使用Git时&#xff0c;常见的操作之一就是通过git clone命令将远程仓库克隆…...

基于51单片机的公交自动报站系统

**单片机设计介绍&#xff0c; 基于51单片机的公交自动报站系统 文章目录 一 概要公交自动报站系统概述工作原理应用与优势 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 很高兴为您介绍基于51单片机的公交自动报站系统&#xff1a; 公交自动报…...

NextJS开发:Image组件的使用及缺陷

Next.js 中的 Image 组件相比于传统的 img 标签有以下几个优点&#xff1a; 懒加载&#xff1a;Image 组件自带懒加载&#xff0c;当页面滚动到 Image 组件所在位置时才会加载图片&#xff0c;从而加快页面的渲染速度。自动优化&#xff1a;Image 组件会自动将图片压缩、转换格…...

网络安全面试经历

2023-11-22 X亭安全服务实习生面试 一面&#xff1a; 工作方向&#xff1a;偏蓝队 总结&#xff1a;实习蓝队面试没有什么难度&#xff0c;没有什么技术上的细节问题&#xff0c;之前准备的细节问题没有考 最后和面试官聊了聊对网安的认识&#xff0c;聊了聊二进制的知识…...

Rust语言入门教程(四) - 数据类型

标量类型(Scalar Types) 在Rust中&#xff0c;一共有4中标量类型&#xff0c; 也就是基本数据类型&#xff0c;分别是&#xff1a; 整型&#xff08;Integers&#xff09;浮点型&#xff08;Floats&#xff09;布尔型&#xff08;Boolean&#xff09;字符型&#xff08;Chara…...

华为云人工智能入门级开发者认证学习笔记

人工智能入门级开发者认证 人工智能定义 定义 人工智能 (Artificial Intelligence) 是研究、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 强人工智能 vs 弱人工智能 强人工智能&#xff1a;强人工智能观点认为有可能制造出真正能推理&#xff08…...

腾讯云发布新一代基于AMD处理器的星星海云服务器实例SA5

基础设施的硬实力&#xff0c;愈发成为云厂商的核心竞争力。 11月24日&#xff0c;腾讯云发布了全新一代星星海服务器。基于自研服务器的高密设计与硬件升级&#xff0c;对应云服务器SA5是全球首家搭载第四代AMD EPYC处理器&#xff08;Bergamo&#xff09;的公有云实例&#…...

算法通关村-----数论问题解析

最大公约数和最小公倍数 概念描述 最大公约数&#xff08;GCD&#xff09;是指两个或多个整数共有约数中的最大值。 最小公倍数&#xff08;LCM&#xff09;是指两个或多个整数共有的倍数中的最小值 方法介绍 碾转相除法 一种用于计算两个整数的最大公约数&#xff08;GCD…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...