libevent(1)windows下安装libevent

article/2025/9/10 13:12:36

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

在具体开发过程中,我采用在windows上开发测试,再在unix上运行测试的原则。

Windows开发环境:win7、win10。

Unix开发环境:centos7。

软件版本:

Windows:windows7

VS:vs2019 community

libevent :2.1.12              libevent

zlib:1.2.11         zlib Home Site

openssl:1.1.1l          /source/index.html

1、openssl安装

⑴ 安装perl

版本:5.26         Perl Download - www.perl.org

安装过程略。

安装好后,设置perl的环境变量,比如:D:\Perl64\bin

把VS的nmake环境变量也配置下,比如:

D:\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\Hostx64\x64

⑵ 安装NASM汇编器

版本:2.13.03

我这里是直接解压缩一个zip 包:nasm-2.13.03-win64.zip

然后把环境变量设置一下(能找到nasm.exe文件),比如:

D:\Program Files\nasm-2.13.03-win64\nasm-2.13.03

⑶ 开始编译

选择vs的x64 Native tools,进入openssl目录:

 编译64位(32位的话用VC-WIN32):

perl configure VC-WIN64A no-shared \

--prefix= D:\libevent\openssl-1.1.1\build32 \

--openssldir= D:\libevent\openssl-1.1.1\build\SSL

说明:

如果报错:you may need to install the Win32::Console module

则修改 D:\Perl64\site\lib\ActivePerl目录下的Config.pm文件,在400行左右,注释掉一些代码,如下“红色代码”所示:

# Prevent calling Win32::Console::DESTROY on a STDOUT handle

#my $console;

sub _warn {

#    my($msg) = @_;

#    unless (-t STDOUT) {

#     print "\n$msg\n";

#     return;

#    }

#    require Win32::Console;

#    unless ($console) {

#     $console = Win32::Console->new(Win32::Console::STD_OUTPUT_HANDLE());

#    }

#    my($col,undef) = $console->Size;

#    print "\n";

#    my $attr = $console->Attr;

#    $console->Attr($Win32::Console::FG_RED | $Win32::Console::BG_WHITE);

#    for (split(/\n/, "$msg")) {

#     $_ .= " " while length() < $col-1;

#     print "$_\n";

#    }

#    $console->Attr($attr);

#    print "\n";

}

生成makefile文件后,下面执行命令:

nmake (可能耗费时间较长,请耐心等待10分钟)

nmake install

2、zlib安装

⑴ 把zlib源代码解压缩到目录:

D:\libevent\zlib-1.2.11

⑵ 打开x64 Native tools command prompt后,进入zlib里的子目录masmx64。

⑶ 运行bld_ml32.bat。

运行完毕后会生成2个obj文件。

⑷ 打开VS,选择“打开项目或解决方案(P)”,打开:

D:\libevent\zlib-1.2.11\contrib\vstudio\vc14\ zlibvc.sln

编译项目。

如果报错,一般这么做就能解决:

3、libevent安装

⑴ 把libevent-2.1.12-stable.tar.gz文件解压缩到目录:D:\libevent

⑵ 打开x64 Native tools command prompt后,进入libevent目录。

 

 修改以下5个文件:

①在 event_iocp.c evthread_win32.c listener.c 中加入一个宏定义 #define _WIN32_WINNT 0x0500

②修改 minheap-internal.h 其中有一个UINT32_MAX的宏定义不受支持 改成UINT_MAX

③修改 Makefile.nmake 找到 CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo /Zi 务必加上最后一个选项方便调试。

⑶ 开始编译

nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent\openssl-1.1.1\build32

注意,这里openssl的目录。里面有这几个文件夹。

⑷ 编译后,我这里有报错:

找不到libeay32.lib。

解决办法:

① 打开libevent的test目录里的Makefile.nmake文件。

找到这行:

② 分别把ssleay32.lib、libeay32.lib文件替换成openssl里lib目录下的:libcrypto.lib、libssl.lib文件。

③ 先nmake /f Makefile.nmake clean,然后再运行:

nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent\openssl-1.1.1\build32

发现会报这样的错误:

libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertFreeCertificateContext@4

继续修改libevent-2.1.12\test目录下的Makefile.nmake文件,加上Crypt32.lib库。

④ 运行后又发现下面的错误:

修改minheap-internal.h文件,加上:#pragma comment(lib, "Iphlpapi.lib")

然后:

nmake /f Makefile.nmake clean

nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent\openssl-1.1.1\build32

⑸ 编译成功后,可执行test\ regress.exe检测下。

(6) 测试libevent

 测试成功!

参考:

(1) WINDOWS下安装使用libevent
https://blog.csdn.net/luoxin97/article/details/106716980
(2)nmake fatal error u1077:path/c1.exe 返回代码0x2解决思路
https://blog.csdn.net/sean4m/article/details/60143222
(3)windows编译libevent报错
https://blog.csdn.net/weixin_41560737/article/details/126787906
https://blog.csdn.net/yuanshenqiang/article/details/121018148
https://blog.csdn.net/qq_33194301/article/details/104879626
http://t.zoukankan.com/zkhm123-p-5976061.html
(4)多线程环境中使用Libevent
https://blog.csdn.net/whf_139/article/details/126578936
(5)libevent集成zlib的配置
https://blog.csdn.net/u012372584/article/details/90517961


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

相关文章

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…

【SVN】windows下的SVN客户端访问ubuntu下的SVN服务器

目录 第一部分 windows创建本地版本库、连接ubuntu的SVN服务器 步骤0&#xff1a; 步骤一&#xff1a;创建windows本地版本库 步骤二&#xff1a;checkout检测 步骤三&#xff1a;输入之前配置的用户名和密码 第二部分 windows上传文件至SVN服务器 步骤一&#xff1a;添加…

SVN 客户端下载与安装

SVN 客户端下载与安装 svn 客户端下载地址&#xff1a;https://tortoisesvn.net/downloads.zh.html 1. 网址截图 2. 汉化包下载安装 下载完毕&#xff0c;双击安装&#xff0c;下一步即可&#xff08;可根据需要进行安装路径选择&#xff09;

windows环境下的svn客户端(VisualSVN Server),服务端(TortoiseSVN),中文化(TortoiseSVN LanguagePack_1.9.7.2)安装和使用(超详细)

一、下载安装包 1.VisualSVN server 服务端下载&#xff1a;VisualSVN Server 2.svn客户端下载&#xff1a;TortoiseSVN 3.中文化包下载&#xff1a;TortoiseSVN LanguagePack_1.9.7.27907-x64-zh_CN中文包 二、安装软件 1.安装VisualSVN server 服务端&#xff1a; &#xf…

SVN客户端安装及操作文档

第一部分&#xff1a;客户端安装 1 在D盘创建svnclient文件夹&#xff0c;并将svn安装包复制到svnclient文件夹中 2 客户端安装 双击文件“TortoiseSVN-1.14.1.29085-x64-svn-1.14.1.msi” 点击“Next” 点击“Next” 点击“Browse”选择安装路径&#xff0c;这里将安装路径…

12306图片验证码效果实现

效果如下&#xff1a; 原理&#xff1a;从服务器获取的图片上&#xff0c;我们画上自己的图片&#xff0c;然后再显示出来。 核心代码如下在处理imageview点击事件前做如下操作&#xff1a; Bitmap bitmap BitmapFactory.decodeResource(getResources(), R.mipmap.yanzheng)…