2012-01-26 54 views
0

我想编译this libevent2 package到Windows,但目前我不能,因为配置脚本是一个shell脚本(/ bin/sh;不能在Windows中运行)。如何在Windows上编译libevent2?

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

编辑:我已成功编译libevent2使用NMAKE Makefile.nmake但它并没有产生的任何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 

回答

3

一的.lib文件一个Windows二进制文件。它是一个静态库文件,供应用程序中的链接程序使用,以静态链接库(即“通俗地说”)。

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

+0

谢谢,我设法编译.lib文件,但我没有意识到它们是库 – liamzebedee

0

使用Cygwin进行编译。这是一个Linux仿真。