首页 > 系统相关 >【Linux系统编程】libevent库介绍与安装

【Linux系统编程】libevent库介绍与安装

时间:2024-04-08 22:13:35浏览次数:22  
标签:Linux tt 编程 openssl libevent test 2.1 type

libevent库介绍与安装

libevent介绍

libevent是一个异步事件处理软件函式库。libevent是一个提供异步事件通知的软件库。libevent提供了一组应用程序编程接口(API),libevent API提供的机制允许开发者为事件注册回调函数,例如文件描述符上的发生了特定事件或者等待特定事件超时,接收到信号的事件,常规的定时器超时事件。当事件发生时,libevent实例会执行回调函数。libevent 在设计上是用来替代很多事件驱动网络服务器自行实现的事件循环框架的。 也就是说,libevent可以用来取代网络服务器所使用的事件循环检查框架。
libevent 现在支持 /dev/poll,kqueue(2),POSIX select(2),Windows IOCP,poll(2),epoll(7),和 Solaris端口。libevent 对实时信号有试验性支持。libevent 暴露出的 API 在全平台都是一致的,因此 libevent 支持可移植的应用程序开发,并提供“操作系统上最可扩展的事件通知机制”。
开发者通过 libevent 注册信号回调,可以编写“安全”的信号处理程序,因为用户提供的信号处理程序都不会在信号 处理上下文中运行。
由于可以省去对网络的处理,且拥有不错的性能,有些软件使用libevent作为网络底层的函式库,如:memcached、Tor。(维基百科)

libevent安装

  1. 去官网(https://libevent.org/)获取下载链接。
  2. 使用wget下载压缩包 wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
  3. 解压缩 tar -xzf libevent-2.1.12-stable.tar.gz
  4. 进入目录 cd libevent-2.1.12-stable
  5. 执行配置 ./configure,生成 Makefile
  6. 执行 make,编译源码
  7. 执行 sudo make install,将库文件和头文件复制到相应文件夹

问题与解决

configure阶段

问题描述:

configure: error: openssl is a must but can not be found. You should add the directory containing `openssl.pc' to the `PKG_CONFIG_PATH' environment variable, or set `CFLAGS' and `LDFLAGS' directly for openssl, or use `--disable-openssl' to disable support for openssl encryption

解决办法:sudo yum install openssl-devel

make阶段

问题描述:

test/regress_buffer.c: In function ‘test_evbuffer_pullup_with_empty’:
test/tinytest_macros.h:116:15: warning: cast from function call of type ‘unsigned char *’ to non-matching type ‘long int’ [-Wbad-function-cast]
  type val1_ = (type)(a);      \
               ^
test/tinytest_macros.h:144:2: note: in expansion of macro ‘tt_assert_test_fmt_type’
  tt_assert_test_fmt_type(a,b,str_test,type,test,type,fmt, \
  ^
test/tinytest_macros.h:158:2: note: in expansion of macro ‘tt_assert_test_type’
  tt_assert_test_type(a,b,#a" "#op" "#b,long,(val1_ op val2_), \
  ^
test/regress_buffer.c:444:2: note: in expansion of macro ‘tt_int_op’
  tt_int_op(evbuffer_pullup(buf, -1), ==, NULL);
  ^

问题解决:没关系,不用管

编译自己的源文件找不到库

问题描述:

./hello-word: error while loading shared libraries: libevent-2.1.so.7: cannot open shared object file: No such file or directory

问题解决:

  • 使用sudo vim打开/etc/ld.so.conf,在末尾加新行/usr/local/lib
  • 执行sudo ldconfig

标签:Linux,tt,编程,openssl,libevent,test,2.1,type
From: https://www.cnblogs.com/yangxuanzhi/p/18122764

相关文章

  • 进阶版Python编程题(2)洛谷(小学数学N合一)
    问题1请输出 IloveLuogu!问题2这里有 10 个苹果,小A拿走了 2 个,Uim拿走了 4 个,小B拿走剩下的所有的苹果。我们想知道:小A和Uim两个人一共拿走多少苹果?小B能拿走多少苹果?现在需要编写一个程序,输出两个数字作为答案,中间使用空格分开。问题3现在有 1......
  • 进阶版Python编程题(1)洛谷
    题目描述学校和yyy的家之间的距离为 s千米,而yyy以 v 米每分钟的速度匀速走向学校。在上学的路上,yyy还要额外花费 10 分钟的时间进行垃圾分类。学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy最晚能什么时候出门。由于路途遥远,yyy可能不得不提前一......
  • 【Linux】手搓shell
    手搓shell代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>#defineZERO'\0'#defineSIZE512#defineSEP......
  • 实验2_C语言分支与循环基础应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN567intmain()8{9intnumber;10inti;1112srand(time(0));1314for(i=0;i<N;++i){15number=rand()%65+1;......
  • 读《我和Labview》Labview编程基础2.2-2.3
    2数组和循环结构2.1簇2.1.2簇控件2.1.3簇数据运算2.2数组2.2.1数组数据2.2.2数组数据的运算2.2.3数组数据的比较2.2.4数组索引2.2.5数组合并2.2.6其它类型的数组控件2.3for循环结构2.3.1输入隧道2.3.2输出隧道2.3.3应用实例2.3.4移位寄存器2.3.5结束条件2.4while......
  • 并发编程之Java中Selector
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。Selector提供选择执行已经就绪的任务的能力,使得多元I/O成为可能,就绪选......
  • python画信封 2024年3月青少年电子学会等级考试 中小学生python编程等级考试一级真题
    目录python画信封一、题目要求二、算法分析三、程序代码四、程序说明五、运行结果六、考点分析七、推荐资料1、蓝桥杯比赛2、考级资料3、其它资料python画信封2024年3月python考级一级真题一、题目要求龙年到了,我们要给远方的亲人写一封新年贺信,请用turtle......
  • Linux下 sudo 和 su 的区别
    su介绍及使用su命令就是切换用户的工具,比如我们是以普通用户guest登录的,但要添加用户,执行useradd,guest用户没有这个权限,只有root有权限。解决办法有两个,一是退出guest用户,重新以root用户登录;二是不退出guest用户,使用su来切换到root下进行添加用户的操作,操作完......
  • Python实战:Python在物联网(IoT)设备编程中的应用
    1.引言物联网(IoT)是一个由相互连接的物理设备组成的网络,这些设备可以通过互联网进行通信和交换数据。Python作为一种功能强大的编程语言,被广泛应用于物联网设备的编程和开发中。通过Python,我们可以轻松地实现设备之间的数据通信、设备控制等功能。2.环境准备在开......
  • 实验2 C语言分支与循环基础应用编程
    task1.c问题一:生成1~65中的随机数问题二:随机生成5个本班学号task2.c1#include<stdio.h>2intmain()3{4charcolour;5printf("请输入交通信号灯的颜色:");6while((colour=getchar())!=EOF)7{8switch(colour)9......