Как скомпилировать libevent2 на Windows? - PullRequest
1 голос
/ 26 января 2012

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

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

РЕДАКТИРОВАТЬ: Мне удалось скомпилировать 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

Ответы [ 2 ]

5 голосов
/ 26 января 2012

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

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

0 голосов
/ 26 января 2012

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

...