CentOS 7 安装Libevent

CentOS 7 安装Libevent

1.下载安装包

新版本是libevent-2.1.12-stable.tar.gz。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/

2.创建目录

# mkdir libevent-stable

3.解压
# tar zxvf libevent-2.1.12-stable.tar.gz

4.进入目录
# cd libevent-2.1.12-stable

5.设置安装路径
# ./configure –prefix=/usr/local/libevent

[root@localhost libevent-2.1.12-stable]# ./configure -prefix=/usr/local/libevent
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 style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
提示报错:
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

大致报错信息:编译libevent源码,openssl 依赖包在CentOS系统中没有发现openssl, 系统全局变量中缺少PKG_CONFIG_PATH 变量定义,注意PKG_CONFIG_PATH变量必须包含openssl.pc 连接文件。

解决办法:重新安装OpenSSL 替换CentOS 7 默认自带的OpenSSL。

一、查看主机openssl版本信息


1、查看路径
# which openssl
复制
2、查看版本
# openssl version
复制
3、查看CentOS版本
# cat /etc/redhat-release

温馨提示:CentOS 7.6 默认版本:openssl-1.0.2k
 

二、安装Openssl


方法一、下载源码编译安装
访问OpenSSL官网资源,查看是否有最新的版本发布。

官网资源地址:https://www.openssl.org/source

1、解压并切换目录
tar -zxvf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
复制
2、设定Openssl 安装,( –prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下
./config --prefix=/usr/local/openssl
复制
3、执行命令
./config -t
复制
4、执行make、make install,编译Openssl
make & make install

建议再安装一次,使用shared 生成动态连接库。否则无法找到库文件
./config shared --prefix=/usr/local/openssl

make clean

make&& make install
 

5、centos 切换openssl版本
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

ldconfig -v

ln -s /usr/local/openssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.1.0.0
ln -s /usr/local/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.1.0.0
 

注意:不能直接删除软链接
CentOS 7 OpenSSL 默认libssl.so.* 和libcrypto.so.* 软连接。
[root@localhost lib]# find / -name libssl.so.1.0.2k
/var/lib/docker/overlay2/30e17a77fc02fa56f32ede3a9d504681b9035fecbd69d5b283d9d2d635bd8b55/diff/usr/lib64/libssl.so.1.0.2k
/var/lib/docker/overlay2/99f62cd325cf4c1fd668b98f95919648b19b0638ff2626250be1c14908f91ee9/diff/usr/lib64/libssl.so.1.0.2k
/usr/lib64/libssl.so.1.0.2k
[root@localhost lib]# find / -name libcrypto.so.1.0.2k
/var/lib/docker/overlay2/30e17a77fc02fa56f32ede3a9d504681b9035fecbd69d5b283d9d2d635bd8b55/diff/usr/lib64/libcrypto.so.1.0.2k
/var/lib/docker/overlay2/99f62cd325cf4c1fd668b98f95919648b19b0638ff2626250be1c14908f91ee9/diff/usr/lib64/libcrypto.so.1.0.2k
/usr/lib64/libcrypto.so.1.0.2k如需使用新版本开发,则需替换原来的软链接指向,即替换原动态库,进行版本升级。替换/lib(lib64)和/usr/lib(lib64)和/usr/local/lib(lib64)存在的相应动态库:
[root@localhost lib]# ln -s /usr/local/openssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.1.0.0
[root@localhost lib]# ln -s /usr/local/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.1.0.0

设置PKG_CONFIG_PATH 全局环境变量

vi /etc/procfile-- 最后一行添加如下指令:
export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig-- 修改后的配置文件生效
source /etc/profilee

再次编译Libevent 源码

5.设置安装路径
# ./configure –prefix=/usr/local/libevent

[root@localhost libevent-2.1.12-stable]# ./configure -prefix=/usr/local/libevent
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 style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
*****

 6. 编译并且安装至指定路径地址(/usr/local/libevent)

# make &  make install

root@localhost libevent-2.1.12-stable]# make &  make install
[1] 8554
make  install-am
make  all-am
make[1]: 进入目录“/usr/local/libevent-stable/libevent-2.1.12-stable”
make[1]: 进入目录“/usr/local/libevent-stable/libevent-2.1.12-stable”CC       sample/le_proxy-le-proxy.oCC       sample/le_proxy-le-proxy.oCC       libevent_openssl_la-bufferevent_openssl.lo
mv: 无法获取"sample/.deps/le_proxy-le-proxy.Tpo" 的文件状态(stat): 没有那个文件或目录
make[1]: *** [sample/le_proxy-le-proxy.o] 错误 1
make[1]: 离开目录“/usr/local/libevent-stable/libevent-2.1.12-stable”
make: *** [all] 错误 2
In file included from /usr/local/openssl/include/openssl/ssl.h:152:0,from bufferevent_openssl.c:66:
bufferevent_openssl.c: 在函数‘bufferevent_openssl_socket_new’中:
/usr/local/openssl/include/openssl/bio.h:589:34: 警告:计算出的值未被使用 [-Wunused-value]# define BIO_set_close(b,c)      (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)^
bufferevent_openssl.c:1466:3: 附注:in expansion of macro ‘BIO_set_close’BIO_set_close(bio, 0);^CCLD     libevent_openssl.laCCLD     sample/le-proxyCC       sample/https_client-https-client.oCC       sample/https_client-hostcheck.o
******

至此CentOS 7 安装Libevent 网络库结束。

CentOS 7 验证Libevent 框架

前提:使用libevent 源码中的sample 文件夹中的hello-word

NetCat 工具:各种TCP和UDP监听和连接测试用途。 

判断CentOS 7 中是否安装netcat/nc, 执行如下指令:

# nc --help
如果没有netcat 版本信息输出和使用手册输出,你则需要安装netcat/nc 工具,请执行如下指令:

# yum install -y nc

[root@localhost ~]# yum install -y nc
已加载插件:fastestmirror
Determining fastest mirrors* base: mirrors.bupt.edu.cn* extras: mirrors.ustc.edu.cn* updates: mirrors.bupt.edu.cn
base                                                                                                                     | 3.6 kB  00:00:00
docker-ce-stable                                                                                                         | 3.5 kB  00:00:00
extras                                                                                                                   | 2.9 kB  00:00:00
updates                                                                                                                  | 2.9 kB  00:00:00
docker-ce-stable/7/x86_64/primary_db                                                                                     | 117 kB  00:00:26
正在解决依赖关系
--> 正在检查事务
---> 软件包 nmap-ncat.x86_64.2.6.40-19.el7 将被 安装
*****

启动Libevent服务端

[root@localhost sample]# ./hello-world
*** 等待客户端连接 ***

使用NetCat/NC 模拟TCP请求

[root@localhost ~]# nc 192.168.43.10 9995
Hello, World!

LibEvent 服务端输出

[root@localhost sample]# ./hello-world
*** 等待客户端连接 ***
flushed answer

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

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

相关文章

pdf文件可以压缩大小吗?pdf压缩方法分享

在日常生活和工作中,我们经常需要处理大量的PDF文件。有时候,一个PDF文件的大小可能超过了几十MB,甚至无法通过电子邮件发送。那么,如何有效地压缩PDF文件大小呢?本文将为你介绍三个简单易行的方法,帮助你轻…

RabbitMQ工作模式——Topics模式

1.Topics通配符模式 *是一个单词,#是0到多个单词 Topics模式生产者代码 public class Producer_Topic {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//…

FreeRTOS 任务创建分析

FreeRTOS 任务创建分析 Fang XS.1452512966qq.com如果有错误,希望被指出,学习技术的路难免会磕磕绊绊 FreeRTOS FreeRTOS快速上手教程FreeRTOS之任务优先级设置TCB 即任务控制块。FreeRTOS中使用TCB来进行任务管理,用来储存任务状态&#…

【C语言】指针笔试题解析

大家好,我是苏貝,本篇博客带大家了解指针和数组笔试题解析,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 1. 下面程序的结果是什么? int main() {int a[5] { 1, 2, 3, 4, 5 };i…

Nginx负载均衡详解

一、负载均衡介绍 1、负载均衡的定义 单体服务器解决不了并发量大的请求,所以,我们可以横向增加服务器的数量(集群),然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多…

React useRequest解读

源码结构: 可以看到虽然是一个hooks(具有一定功能且具备状态的单一函数) 但是各种文件功能分得也是很细的,方便抽离和复用 useRequest.ts 抽离的原则还是单一功能原则 可以看出 真正的hooks实现是在Implement里 对于类型type的引…

【前端面试题】浏览器面试题

文章目录 前言一、浏览器面试问题1.cookie sessionStorage localStorage 区别2.如何写一个会过期的localStorage,说说想法2.如何定时删除localstorage数据2.localStorage 能跨域吗2.memory cache 如何开启2.localstorage的限制2.浏览器输入URL发生了什么2.浏览器如何…

孙哥Spring源码第25集

第25集、处理代理中获取代理进行方法调用 0、问题所在 1、实现ApplicationContextAware接口实现代理 它的处理是在ApplicationContextAware中处理的 2、ExposeProxy分析 整体 分析 如何设置成了false就会有下面的问题 3、使用EnableAspectJAutoProxy解决代理问题 4、到底如何…

WEB使用VUE3实现地图导航跳转

我们在用手机查看网页时可以通过传入经纬度去设置目的地然后跳转到对应的地图导航软件,如果没有下载软件则会跳转到下载界面 注意: 高德地图是一定会跳转到一个新网页然后去询问用户是否需要打开软件百度和腾讯地图是直接调用软件的这个方法有缺陷&…

JavaScript中的代理对象(proxy)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 创建代理对象⭐ 使用代理对象⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友…

【车载开发系列】ECU Application Software程序刷新步骤

【车载开发系列】ECU Application Software程序刷新步骤 ECU Application Software程序刷新步骤 【车载开发系列】ECU Application Software程序刷新步骤一. Boot Software(引导软件)1)boot manager(启动管理器)2&…

ElasticSearch(二)

1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,…

挂件板死机刷固件

用ESP32-DevKitC_V4刷固件的工具flash_download_tool_3.9.5.exe 挂件板子端口接线依次为V(接3V3)、R(接TXD)、T(接RXD)、G(接GND)、L(悬空) 1.选择ESP8266&…

springboot 捕获数据库唯一索引导致的异常

在一些业务场景中,需要保证数据的唯一性,一般情况下,我们会先到数据库中去查询是否存在,再去判断是否可以插入新的数据.如果是在高并发的情况下,可能还是会出现重复的情况.这时候可能就需要用到锁.也可以在数据库中设置唯一索引. 如果使用唯一索引,在插入相同数据的情况下会抛出…

大二毕设.3-网盘系统

目录 技术选型: 功能概括: 基本演示: 实现讲解: 技术选型: 前端: Vue3 Element Plus后端: SpringBoot Mybatis-Plus MySQL Redis Caffeine FastDFS/OSS SpringCloud Stream RocketMQ Zookeeper 功能概括&…

【李沐深度学习笔记】基础优化方法

课程地址和说明 基础优化方法p2 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 基础优化方法 在讲具体的线性回归实现之前,要先讲一下基础的优化模型的方法 梯度下降 当模型没有显示解&#xff08…

【操作系统笔记二】链接阶段ELF文件

链接阶段&#xff1a;符号解析 链接阶段主要包含&#xff1a; 符号解析重定位 一般情况下&#xff0c;每个 C 文件可以看成一个程序模块&#xff0c;比如下边的main.c就是一个程序模块 #include <stdio.h>extern int shared; int sum(int *a, int n); int array[2] …

三维模型轻量化引擎HOOPS纹理技术概览

随着计算机图形学和虚拟现实技术的飞速发展&#xff0c;大规模三维模型的应用领域不断扩展&#xff0c;如游戏开发、建筑设计、工程模拟等。然而&#xff0c;这些大规模模型往往具有复杂的几何结构和高分辨率的纹理&#xff0c;导致文件大小庞大&#xff0c;不利于在线传输和实…

Stellar Toolkit for MySQL 9.0 Crack 3in1

面向数据库管理员的 MySQL 工具包 Stellar Toolkit for MySQL是一款三合一软件套件&#xff0c;用于修复损坏的 MySQL 和 MariaDB 数据库、从 MySQL 数据库的 InnoDB 和 MyISAM 表恢复数据以及分析 MySQL 数据库日志文件。该软件还可以以最高的安全性和完整性相互转换 MySQL/Ma…

面试官:你了解axios的原理吗?有看过它的源码吗?

面试官&#xff1a;你了解axios的原理吗&#xff1f;有看过它的源码吗&#xff1f; 一、axios的基本使用 关于 axios 的基本使用&#xff0c;上篇文章已经有所涉及&#xff0c;这里再稍微回顾一下&#xff1a; 发送请求 import axios from axios;axios(config) // 直接传入…