libevent 编译与安装 (WIN10 visual studio2019, ubuntu,centos)

article/2025/9/10 8:33:46

文章目录

      • 一、准备安装包
      • 二、编译与安装
        • 编译zlib
        • 编译openssl
        • 编译libevent
      • 三、libevent集成zlib测试程序修改编译(可选)
      • 四、测试程序
      • 五、linux(ubuntu)测试
        • 安装依赖环境,依次编译zlib,openssl,libevent
        • windows与linux共享文件夹(使用root操作)
        • linux测试

一、准备安装包

前置环境,安装好了VS2017及以上版本

libevent 【下载地址】:https://libevent.org/
zlib   【下载地址】:https://www.zlib.net/
openssl 【下载地址】:https://www.openssl.org/source/old/1.1.1/

perl   【下载地址】:https://www.perl.org/get.html
nasm   【下载地址】:https://nasm.us/

直接下载链接:https://pan.baidu.com/s/1lrSPMjmugcYWbkIjlqPC2g 提取码:5exw

准备好目录如下

PS D:\libevent_project> ls目录: D:\libevent_projectMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/10/18      9:11       22375320 ActivePerl-5.24.3.2404-MSWin32-x64-404865.exe
-a----        2021/10/18      9:07        1026485 libevent-2.1.8-stable.tar.gz
-a----        2021/10/18      9:11         588621 nasm-2.13.03-win64.zip
-a----        2021/10/15     17:45        9834044 openssl-1.1.1.tar.gz
-a----        2021/10/15     17:40         607698 zlib-1.2.11.tar.gz

二、编译与安装

解压zlib-1.2.11.tar.gz
解压libevent-2.1.8-stable.tar.gz
解压openssl-1.1.1l.tar.gz

编译zlib

D:\libevent_project目录下,编写批量编译脚本build_zlib_vs2019_32.bat并执行。

@echo "==========start build zlib============"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set OUT="D:\libevent_project\build_project_vs2017_32\zlib"
call %VS%
cd zlib-1.2.11
nmake /f win32\Makefile.msc clean
nmake /f win32\Makefile.msc
md %OUT%\lib
md %OUT%\bin
md %OUT%\include
copy /Y *.lib %OUT%\lib
copy /Y *.h %OUT%\include
copy /Y *.dll %OUT%\bin
copy /Y *.exe %OUT%\bin
@echo "==========end build zlib============"
pause

编译完成查看D:\libevent_project\build_project_vs2017_32\zlib目录下的lib,include,bin三个目录下的文件是否存在。

编译openssl

双击安装ActivePerl.exe文件,一路下一步安装完成。
解压nasm-2.13.03-win64.zip文件,配置exe文件所在目录的环境变量即可。

perl 使用方法:

  • perl Configure {VC-WIN32 | VC-WIN64A | VC-WIN64 | VC-CE} --prefix=%OUTPATH%
    perl Configure VC-WIN32 编译32位程序
    perl Configure VC-WIN64A 编译64位程序

使用perl生成makefile文件
进入cd D:\libevent_project\openssl-1.1.1目录下生成Makefile文件,执行如下指令:
perl Configure VC-WIN32 --prefix=D:\libevent_project\build_project_vs2017_32\openssl
在这里插入图片描述
执行nmake 进行编译,以管理员身份执行nmake install进行安装。
或者使用如下批处理安装脚本。

D:\libevent_project目录下,编写批量编译脚本build_openssl_vs2019_32.bat以管理员身份执行。

@echo "==========start build openssl============"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set OUT="D:\libevent_project\build_project_vs2017_32\openssl"
call %VS%
D:
cd D:\libevent_project\openssl-1.1.1
perl Configure VC-WIN32 --prefix=%OUT%
nmake clean
nmake
nmake install
@echo "==========end build openssl============"
pause

在这里插入图片描述

编译libevent

进入D:\libevent_project\libevent-2.1.8-stable目录下,以管理员身份执行如下指令:
nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent_project\build_project_vs2017_32\openssl
在这里插入图片描述
进入D:\libevent_project\libevent-2.1.8-stable\test目录下
修改Make.nmake文件内容第六行后,如下:
SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libssl.lib $(OPENSSL_DIR)\lib\libcrypto.lib gdi32.lib User32.lib

运行libevent\test\regress.exe测试编译结果
如果都显式OK,没有报错,则说明编译成功;否则,编译失败。
如果提示缺少libcrypto-1_1.dll,libssl-1_1.dll这2个文件,就从openssl\bin目录下拷贝到regress.exe所在路径。
在这里插入图片描述
查看regress.log是否都ok,若无错误则编译成功。

三、libevent集成zlib测试程序修改编译(可选)

test工作路径=D:\libevent_project\libevent-2.1.8-stable\test\

  1. 添加编译目标
    编辑 test工作路径 下的Makefile.nmake23行末尾添加regress_zlib.obj(注意加空格)
  2. 复制之前编译好的zlib整个文件夹(即bin,lib.include三个文件夹)到D:\libevent_project\libevent-2.1.8-stable
  3. 添加编译目标(包含目录)
    编辑 test工作路径 Makefile.nmake13行CFLAGS=后面加/I../zlib/include
  4. 添加编译目标(添加库目录)
    编辑 test工作路径 下的Makefile.nmake39行末尾添加..\zlib\lib\zdll.lib(注意加空格)
  5. 复制文件D:\libevent_project\build_project_vs2017_32\zlib\bin\zlib1.dll到 test工作路径
  6. 编辑D:\libevent_project\libevent-2.1.8-stable\WIN32-Code\nmake\event2\event-config.h86行下添加#define EVENT__HAVE_LIBZ

清理之前的编译并再次编译

nmake /f Makefile.nmake clean
nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent_project\build_project_vs2017_32\openssl

在这里插入图片描述

测试:查看regress.log文件
test

编译libevent批处理程序

@echo "==========start build libevent============"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set OUT="D:\libevent_project\build_project_vs2017_32\libevent"
call %VS%
cd D:\libevent_project\libevent-2.1.8-stable
nmake /f Makefile.nmake clean
nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent_project\build_project_vs2017_32\openssl
md %OUT%\lib
md %OUT%\bin
md %OUT%\include
copy /Y *.lib %OUT%\lib
xcopy /S/Y include %OUT%\include\
xcopy /S/Y WIN32-Code\nmake %OUT%\include\
copy /Y *.dll %OUT%\bin
copy /Y *.exe %OUT%\bin
@echo "==========end build libevent============"
pause

四、测试程序

新建项目,右击【配置】配置如下:
【C/C++】->【常规】->【预编译头】不使用预编译头
【C/C++】->【常规】->【附加包含路径】添加D:\libevent_project\build_project_vs2017_32\libevent\include
【链接器】->【常规】->【附加库目录】添加D:\libevent_project\build_project_vs2017_32\libevent\lib

【链接器】->【输入】->【附加依赖性】添加:

libevent.lib
libevent_core.lib
libevent_extras.lib
libevent_openssl.lib
ws2_32.lib
zlib.lib

测试程序如下:

#include <iostream>
#include <event2/event.h>int main(int argc, char** argv) {
#if _WIN32//windowns 初始化socket库WSADATA wsa;WSAStartup(MAKEWORD(2, 2), &wsa);
#endifevent_base* base = event_base_new();if (base) {std::cout << "first libevent" << std::endl;}return 0;
}

五、linux(ubuntu)测试

安装依赖环境,依次编译zlib,openssl,libevent

sudo apt-get install perl g++ make automake libtool unzip vim zip
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make 
make install
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config
make
make install
tar -zxvf libevent-2.1.8-stable.tar.gz
./autogen.sh
./configure
make
make install
test/regress > ../regress.log  #测试安装(查看zlib,openssl是否成功)

报错:./testlibevent: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
执行:ln -s /usr/local/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6

windows与linux共享文件夹(使用root操作)

  1. Ubuntu安装VMware Tools
  2. 虚拟机中ubuntu使用共享文件夹(选择win10目录)
  3. 默认挂载路径:/mnt/hgfs
  4. 挂载新路径方便使用:
    cd ~
    mkdir libevent_src
    mkdir -p /mnt/hgfs/libevent_learning # 这个名字随便取(被挂载后覆盖了)
    sudo mount --bind /mnt/hgfs/libevent_learning ~/libevent_src
    
    【拓展阅读】关于服务器之间路径映射

linux测试

写Makefile,执行make clean && make

firstlibevent:main.cppg++ $^ -o $@ -levent./$@clean:rm -rf firstlibeventrm -rf *.o

在这里插入图片描述

参考
问题解决:
NMAKE : fatal error U1073: 不知道如何生成“print-winsock-errors.obj”
zlib编译
https://www.cnblogs.com/fortunely/p/15308629.html
zlib编译x64:https://www.cnblogs.com/oloroso/p/7284874.html


http://chatgpt.dhexx.cn/article/Sw31bVbB.shtml

相关文章

Libevent 学习一:Libevent 源码编译

文章目录 Libevent 学习一&#xff1a;Libevent 源码编译Libevent Windows 编译Windows 编译环境安装 Visual Studio Community 2015安装 zlib安装 OpenSSL安装 Libeventcmake 安装 LibeventLibevent 测试程序 Libevent Linux编译CentOS 7 安装 LibeventLibevent 测试程序 Libe…

libevent mysql_libevent安装总结

1.先用&#xff1a;ls -al /usr/lib | grep libevent 查看是否已安装&#xff1b;如果已安装且版本低于1.3&#xff0c;则先通过&#xff1a;rpm -e libevent —nodeps进行卸载。 2.下载libevent安装包&#xff1a;libevent-2.0.18-stable.tar.gz。 wget https://github.com/do…

在window用vcpkg安装libevent

参考readme https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md 使用的PackageManager方式安装&#xff0c; Package Managers 下载 vcpkg 依赖管理包 git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.bat ./vcpkg integrate…

libevent实践01:准备源码、搭建项目、编译脚本和入门例子

编译源码 libevent是一个Reactor事件库。 我的理解&#xff0c;就是封装了select、epoll、poll的函数库。有使用select&#xff0c;poll&#xff0c;epoll的需求就可以使用的。 官网地址&#xff1a;https://libevent.org/ 下载源码&#xff1a; https://github.com/libev…

libevent(1)windows下安装libevent

Socket通信库libevent成熟、稳定、性能高&#xff0c;在unix和windows下都能使用&#xff0c;在证券交易领域也有不少成功的应用&#xff0c;已经用事实证明是非常棒的socket通信库。对我们目前交易系统的unix重构来说&#xff0c;是比较合适的选择 –– 坑少、在证券交易项目中…

Libevent库的学习

目录 Libevent 概述 Libevent 使用模型 使用Libevent的基本流程&#xff1a; libevent 的核心&#xff0c;event 事件 1. 创建一个事件event 2. 释放event_free 3. 注册event 4. 信号事件 5. 销毁event_base Libevent 结构图 使用libevent库去实现tcp服务器 Libev…

编译libevent

本文记录在win10编译libevent的过程 1.编译前准备zlib,openssl zlib网址 http://www.zlib.net/ 下载源码解压缩 打开vs的dos窗口 32位选择32位窗口这里选择64位,cd 到解压后的文件夹 执行 nmake /f win32/Makefile.msc 执行后可以看到目录下有lib文件和dll文件和测试文件…

libevent简要介绍

libevent库 开源。精简。跨平台&#xff08;Windows、Linux、Maxos、unix&#xff09;。专注于网络通信。 源码包安装&#xff1a; ./configure 检查安装环境 生成makefile make 生成.o和可执行文件 sudo make install …

Libevent库的简介

一、libevent是什么 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库&#xff0c;主要有以下几个亮点&#xff1a;事件驱动&#xff08; event-driven&#xff09;&#xff0c;高性能;轻量级&#xff0c;专注于网络&#xff0c;不如 ACE 那么臃肿庞大&#xff1b…

libevent库学习(1)

一、初识 1、libevent介绍 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库&#xff0c;主要有以下几个亮点&#xff1a;事件驱动&#xff08; event-driven&#xff09;&#xff0c;高性能;轻量级&#xff0c;专注于网络&#xff0c;不如 ACE 那么臃肿庞大&…

详解Libevent网络库

项目中要用到libevent&#xff0c;所以就自学了libevent&#xff0c;参考资料为张亮的《libevent源码深度剖析》和《linux高性能服务器编程》 Libevent简介 Libevent是开源社区一款高性能的I/O框架库&#xff0c;其具有如下特点&#xff1a; 1.跨平台支持。Libevent支持Linu…

Libevent库的介绍与应用

Libevent库 Libevent概述Libevent使用模型Libevent库使用示例Libevent事件类型和框架结构使用Libevent完成tcp服务端 Libevent概述 Libevent是开源社区的一款高性能的I/O框架库&#xff0c;使用Libevent的著名案例有&#xff1a;高性能的分布式内存对象缓存软件memcached,Goog…

Linux c 开发 - libevent

目录 一、event_base 1. 创建event_base 2. 查看IO模型 3. 销毁event_base 4. 事件循环 event loop 5. event_base的例子 二、event 事件 1. 创建一个事件event 2. 释放event_free 3. 注册event 4.event_assign 5. 信号事件 6. event细节 三、Socket实例 四、Bu…

安装svn客户端

下载地址 下载 TortoiseSVN 我的网盘地址&#xff1a; 百度网盘 请输入提取码 提取码&#xff1a; em9s 1、安装客户端 双击运行&#xff1a; 点击【next】 点击【next】 选择好路径后&#xff0c;点击【next】 点击【install】安装 点击【finish】完成安装。安装完成后重…

SVN客户端配置--客户端

一、使用客户端软件连接SVN服务器 在项目文件夹中单击右键–>TortoiseSVN–>Repo-browser,并在弹出框中贴入URL&#xff08;svn://服务器IP&#xff09; 在图中指定的位置单击右键选择checkput 点击OK点击OK SVN的三大指令 指令名称Checkout①连接到SVN服务器②更新服务…

SVN客户端(TortoiseSVN)安装及使用说明

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SVN客户端(TortoiseSVN)安装及使用说明 ⏱️ 创作时间&#xff1a; 20…

ubuntu搭建SVN客户端,右击提交或更新

有时候我们会在Linux系统上搞开发&#xff0c;项目在SVN上&#xff0c;不搭建SVN环境搞起来比较麻烦&#xff0c;不用其他软件为载体实现右击提交更新等其他操作&#xff0c;不使用VsCode,IDE全家桶等为载体搭建插件形式的SVN&#xff0c;完全独立搭建 1&#xff1a;安装SVN客…

SVN客户端下载及安装

SVN客户端地址&#xff1a;https://osdn.net/projects/tortoisesvn/# 方法/步骤 官网下载tortoisesvn&#xff0c;下载完成之后&#xff0c;如下图所示&#xff1a; 点击安装进入安装界面&#xff0c;点击接受协议&#xff0c;如下图所示&#xff1a; 选择安装的地址&…

【转】Ubuntu中SVN客户端安装+使用

转自&#xff1a;Ubuntu中SVN客户端安装使用_三少GG-CSDN博客 1、 安装 svn客户端&#xff1a; apt-get install subversion&#xff0c;然后根据提示一步一步&#xff0c;就完成了 svn的安装。当然&#xff0c;也可以源码安装 svn&#xff0c;下载 subversion 一个最新版本的源…

SVN客户端

SVN是Subversion的简称&#xff0c;是一个开源的代码版本控制系统 SVN客户端操作 checkout 检出&#xff1a;初次下载-第一次连接svn服务器时候需要下载对应仓库的数据&#xff08;如果仓库中有数据的话&#xff09;add 新增&#xff1a;新增数据到svn服务器update 更新&#x…