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.hqwc.cn/news/115065.html

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

相关文章

Arduino程序设计(十三)触摸按键实验(TTP223)

触摸按键实验 前言一、TTP223触摸按键模块二、触摸按键控制LED二、触摸按键状态检测 前言 本文介绍触摸按键控制LED的原理及实验,主要内容有:1、介绍TTP223触摸按键模块;2、触摸按键控制LED;3、触摸按键状态检测。 一、TTP223触摸…

Spring学习笔记2 Spring的入门程序

Spring学习笔记1 启示录_biubiubiu0706的博客-CSDN博客 Spring官网地址:https://spring.io 进入github往下拉 用maven引入spring-context依赖 写spring的第一个程序 引入下面依赖,好比引入Spring的基本依赖 <dependency><groupId>org.springframework</groupId&…

不要再滥用可选链运算符(?.)啦!

可选链运算符(?.)&#xff0c;大家都很熟悉了&#xff0c;直接看个例子&#xff1a; const result obj?.a?.b?.c?.d 很简单例子&#xff0c;上面代码?前面的属性如果是空值&#xff08;null或undefined&#xff09;&#xff0c;则result值是undefined&#xff0c;反之…

【漏洞复现】广联达OA漏洞合集(信息泄露+SQL注入+文件上传)

文章目录 声明广联达OA存在信息泄露一、漏洞概述二、漏洞复现三、修复建议广联达Linkworks办公OA SQL注入漏洞后台文件上传漏洞一、产品简介二、漏洞概述三、复现环境四、修复建议 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工…

安装Anaconda与pytorch,在IDEA中配置环境进行编程

1.官网下载与自己python版本匹配的Anaconda(注意&#xff0c;要想成功安装pytorch&#xff0c;python版本也要对应pytorch的相关版本) Anaconda官网最新版本 与自己python版本不否请查找自己版本anaconda版本对应 清华大学镜像下载 2.安装时勾选添加环境变量或者手动添加&am…

2023上半年薪资报告出炉!人均月入过万?!

最近&#xff0c;大家都有听到经济回暖的消息吧&#xff1f;经过三年口罩大考之后&#xff0c;2023年上半年各行各业都迎来复苏&#xff0c;关于职场的话题讨论也不绝于耳。 现在就业环境如何&#xff1f;哪些行业更有前途&#xff1f;大家在求职时是选择一线城市还是回二、三…

深入探究序列化与反序列化:原理、应用和最佳实践

目录 什么是对象的序列化和反序列化序列化步骤反序列化步骤案例演示Java中哪些字段不能序列化序列化与反序列化的重要性序列化与反序列化的应用场景 什么是对象的序列化和反序列化 序列化&#xff08;Serialization&#xff09;是指将对象转化为字节流的过程&#xff0c;以便于…

干货 | 中国石化化工高端新材料价格体系模型构建

以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。 随着石化行业市场日趋饱和&#xff0c;市场竞争日益激烈&#xff0c;企业利润空间不断被压缩&#xff0c;大多数石化企业急需转型开拓新市场&#xff0c;化工原料价格的波动对于石化…

4、wireshark使用教程

文章目录 一、wireshark简介二、环境三、wireshark抓包三、wireshark过滤器使用 一、wireshark简介 Wireshark是使用最广泛的一款「开源抓包软件」&#xff0c;常用来检测网络问题、攻击溯源、或者分析底层通信机制。 Wireshark抓包原理&#xff1a; 单机情况&#xff1a;电脑…

ESP32主板-MoonESP32

产品简介 Moon-ESP32主板&#xff0c;一款以双核芯片ESP32-E为主芯片的主控板&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;低功耗&#xff0c;板载LED指示灯&#xff0c;引出所有IO端口&#xff0c;并提供多个I2C端口、SPI端口、串行端口&#xff0c;方便连接&#xff0c;…

基于PHP语言研发的抖音矩阵系统源代码开发部署技术文档分享

一、概述 本技术文档旨在介绍抖音SEO矩阵系统源代码的开发部署流程&#xff0c;以便开发者能够高效地开发、测试和部署基于PHP语言的开源系统。通过本文档的指引&#xff0c;您将能够掌握抖音SEO矩阵系统的开发环境和部署方案&#xff0c;从而快速地构建出稳定、可靠的短视频S…

输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)

效果视频&#xff1a;输电线路故障诊断&#xff08;Python代码&#xff0c;逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断&#xff09;_哔哩哔哩_bilibili 项目文件 code.py装载的是英文版本&#xff0c;图上显示英文标签及坐标&#xff0c;Chinese.py装载…