ubuntu下载安装libevent

ubuntu下载安装libevent

  1. libevent 官网上下载最新稳定版本,然后拖到你的linux系统中,解压。或者可是使用wget在线下载。本文下载的是最新版本,其他版本同操作

bash 复制代码
tar xf libevent-2.1.12-stable.tar.gz 
  1. 进入解压后的目录,执行

    bash 复制代码
    ./configure 

    可能会出现报错,内容如下:

    bash 复制代码
    checking for library containing SSL_new... no
    checking for library containing SSL_new... no
    checking openssl/ssl.h usability... no
    checking openssl/ssl.h presence... no
    checking for openssl/ssl.h... no
    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

    解决办法安装libssl-dev

    bash 复制代码
    sudo apt install libssl-dev
  2. 安装

    bash 复制代码
    make 
    sudo make install
  3. 查看安装成功否

    bash 复制代码
    ls /usr/local/lib/libevent*

    若出现下面的文件,则安装成功。

    bash 复制代码
    ls /usr/local/lib/libevent*
    /usr/local/lib/libevent-2.1.so.7            /usr/local/lib/libevent_extra.la
    /usr/local/lib/libevent-2.1.so.7.0.1        /usr/local/lib/libevent_extra.so
    /usr/local/lib/libevent.a                   /usr/local/lib/libevent_openssl-2.1.so.7
    /usr/local/lib/libevent.la                  /usr/local/lib/libevent_openssl-2.1.so.7.0.1
    /usr/local/lib/libevent.so                  /usr/local/lib/libevent_openssl.a
    /usr/local/lib/libevent_core-2.1.so.7       /usr/local/lib/libevent_openssl.la
    /usr/local/lib/libevent_core-2.1.so.7.0.1   /usr/local/lib/libevent_openssl.so
    /usr/local/lib/libevent_core.a              /usr/local/lib/libevent_pthreads-2.1.so.7
    /usr/local/lib/libevent_core.la             /usr/local/lib/libevent_pthreads-2.1.so.7.0.1
    /usr/local/lib/libevent_core.so             /usr/local/lib/libevent_pthreads.a
    /usr/local/lib/libevent_extra-2.1.so.7      /usr/local/lib/libevent_pthreads.la
    /usr/local/lib/libevent_extra-2.1.so.7.0.1  /usr/local/lib/libevent_pthreads.so
    /usr/local/lib/libevent_extra.a
  4. 编译的时候加-levent选项

  5. 代码示例:

    c 复制代码
    // 信号事件
    void signal_cb(int fd, short event, void *arg)
    {
        printf("SIGINT is comming! if you wang exit process, please enter other signal\n");
    }
    
    // 定时事件
    void time_cb(int fd, short event, void *arg)
    {
        printf("time out\n");
        exit(0);
    }
    
    int main()
    {
        struct event_base *base = event_init(); // base为Libevent的一个实例,对base进行初始化
    
        // 创建信号事件
        struct event *signal_event = evsignal_new(base, SIGINT, signal_cb, NULL);
        event_add(signal_event, NULL); // 将事件注册到Libevent中
    
        // 创建定时事件
        timeval tm{5}; // 定时时间5s
        struct event *time_event = evtimer_new(base, time_cb, NULL);
        event_add(time_event, &tm); // 将事件注册到Libevent中
    
        // 执行事件循环,检测就绪事件
        event_base_dispatch(base);
    
        // 事件循环结束,释放资源
        event_free(signal_event);
        event_free(time_event);
        event_base_free(base);
    
        return 0;
    }

    上述程序,捕捉2号信号,并设置捕捉超时时间5秒。

相关推荐
深圳恒讯几秒前
香港云主机硬盘满了怎么办?Linux和Windows在线扩容操作教程
linux·运维·windows
十碗阳春面3 分钟前
阿里云 Ubuntu 22.04 部署 Flarum 论坛:从空白服务器到中文界面、公网 IP 访问
服务器·ubuntu·阿里云
Android系统攻城狮8 分钟前
Linux FFmpeg深度解析之av_parser_init调用流程与实战(二十一)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
HideF24 分钟前
Linux 查看用户和组
linux
寺中人40 分钟前
CentOS 7进程与任务管理
linux·运维·centos·服务器搭建与管理·linux运维命令·nohup screen
隔振降噪研究员1 小时前
裁断机一响,楼板为什么会跟着抖?
大数据·linux·数据库·人工智能
女神下凡3 小时前
芯参谋(87):Linux 系统(SPI NOR)驱动开发指南
linux·运维·arm开发·驱动开发·嵌入式硬件·设计规范
wuminyu9 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
IMPYLH10 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
叼烟扛炮12 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习