2012-01-26 6 views
0

Я пытаюсь скомпилировать this libevent2 package в Windows, но в настоящее время я не могу, потому что скрипт configure является сценарием оболочки (/ bin/sh; не может быть запущен в Windows).Как скомпилировать libevent2 в Windows?

Можно ли его скомпилировать или получить предварительно скомпилированный пакет? В настоящее время у меня установлены MinGW, CMake и MS C++.

EDIT: мне удалось собрать libevent2 используя NMake Makefile.nmake но это не дало никаких двоичных файлов для 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 

ответ

3

.lib файл является под управлением Windows двоичный файл. Это статический файл библиотеки и используется компоновщиком в вашем приложении для статической ссылки на (например, «использование» в терминах непрофессионала) библиотеки.

Поскольку libevent2 не является программой, вы не получите выход .exe - это будет либо большой .dll + small .lib (для динамической компоновки), либо большой .lib (для статической привязки).

+0

Спасибо, мне удалось скомпилировать файлы .lib, и я не понимал, что это библиотеки – liamzebedee

0

Использование Cygwin для компиляции. Это эмуляция Linux.