如何在Windows上编译libevent2

How to compile libevent2 on Windows?

本文关键字:编译 libevent2 Windows      更新时间:2023-10-16

我正试图将此libevent2包编译到Windows,但目前无法编译,因为配置脚本是shell脚本(/bin/sh;无法在Windows中运行)。

有什么方法可以编译它或获得预编译的包吗?我目前安装了MinGW、CMake和MS C++。

编辑:我已经使用nmakeMakefile.nmake编译了libevent2,但它还没有生成任何Windows二进制文件/库。仅.lib.

生成文件如下-

# WATCH OUT!  This makefile is a work in progress.  It is probably missing
# tons of important things.  DO NOT RELY ON IT TO BUILD A GOOD LIBEVENT.
# Needed for correctness
CFLAGS=/IWIN32-Code /Iinclude /Icompat /DWIN32 /DHAVE_CONFIG_H /I.
# For optimization and warnings
CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo
# XXXX have a debug mode
LIBFLAGS=/nologo
CORE_OBJS=event.obj buffer.obj bufferevent.obj bufferevent_sock.obj 
    bufferevent_pair.obj listener.obj evmap.obj log.obj evutil.obj 
    strlcpy.obj signal.obj bufferevent_filter.obj evthread.obj 
    bufferevent_ratelim.obj evutil_rand.obj
WIN_OBJS=win32select.obj evthread_win32.obj buffer_iocp.obj 
    event_iocp.obj bufferevent_async.obj
EXTRA_OBJS=event_tagging.obj http.obj evdns.obj evrpc.obj
ALL_OBJS=$(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)
STATIC_LIBS=libevent_core.lib libevent_extras.lib libevent.lib

all: static_libs tests
static_libs: $(STATIC_LIBS)
libevent_core.lib: $(CORE_OBJS) $(WIN_OBJS)
    lib $(LIBFLAGS) $(CORE_OBJS) $(WIN_OBJS) /out:libevent_core.lib 
libevent_extras.lib: $(EXTRA_OBJS)
    lib $(LIBFLAGS) $(EXTRA_OBJS) /out:libevent_extras.lib
libevent.lib: $(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)
    lib $(LIBFLAGS) $(CORE_OBJS) $(EXTRA_OBJS) $(WIN_OBJS) /out:libevent.lib
clean:
    del $(ALL_OBJS)
    del $(STATIC_LIBS)
    cd test
    $(MAKE) /F Makefile.nmake clean
tests:
    cd test
    $(MAKE) /F Makefile.nmake

.lib文件是Windows二进制文件。它是一个静态库文件,由应用程序中的链接器用于静态链接(即,用外行的术语"使用")库。

由于libevent2不是一个程序,您将不会得到.exe输出——它将是一个big.dll+small.lib(用于动态链接)或big.lib(用于静态链接)。

使用Cygwin进行编译。这是一个类似Linux的模拟。