如何在 Windows 上编译 libevent2?

Posted

技术标签:

【中文标题】如何在 Windows 上编译 libevent2?【英文标题】:How to compile libevent2 on Windows? 【发布时间】:2012-01-26 00:56:34 【问题描述】:

我正在尝试将this libevent2 package 编译到 Windows,但目前我不能,因为配置脚本是一个 shell 脚本(/bin/sh;不能在 Windows 中运行)。

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

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

makefile如下-

# 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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢,我设法编译了 .lib 文件,但我没有意识到它们是库【参考方案2】:

使用Cygwin编译。这是一个类似于 Linux 的仿真。

【讨论】:

以上是关于如何在 Windows 上编译 libevent2?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上编译它

如何在 Windows 上编译skia

如何在 Windows 上编译 64 位版本的 ffmpeg?

如何让 Assetic 在 Windows 上的 Zend Framework 上编译 SCSS?

如何在windows上编译Tesseract OCR

如何在windows上编译Tesseract OCR