1

この libevent2 パッケージを Windowsにコンパイルしようとしていますが、configure スクリプトがシェル スクリプトであるため (/bin/sh; Windows では実行できません)、現在コンパイルできません。

それをコンパイルしたり、コンパイル済みのパッケージを入手したりする方法はありますか? 現在、MinGW、CMake、および MS C++ がインストールされています。

編集: nmake Makefile.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
4

2 に答える 2

5

.lib ファイルWindows バイナリ ファイルです。これは静的ライブラリ ファイルであり、ライブラリに対して静的にリンクする (つまり、一般的な用語で「使用する」) ために、アプリケーションのリンカーによって使用されます。

libevent2 はプログラムではないため、.exe 出力は得られません。大きな .dll + 小さな .lib (動的リンクの場合) または大きな .lib (静的リンクの場合) になります。

于 2012-01-26T02:10:32.723 に答える
0

Cygwinを使用してコンパイルします。Linuxエミュレーションのようなものです。

于 2012-01-26T02:24:02.933 に答える