Mingw+MSYS 中的 libevent 静态编译错误

Posted

技术标签:

【中文标题】Mingw+MSYS 中的 libevent 静态编译错误【英文标题】:Static compiled error with libevent in Mingw+MSYS 【发布时间】:2013-01-11 19:31:47 【问题描述】:

我编写了一个在winxp 中扩展的python 脚本,并编译了mingw+msys。它将调用libevent lib。我希望用户不要安装更多的库,所以我想静态编译它,但是有错误。以下是我编译安装libevent的过程:

​./configure -prefix=D:/libevent -enable-static
make
make install  

我写了两个makefile,我得到了同样的错误。

libevent.a(buffer.o):In function 'evbuffer_read':undefined reference to 'WSARecv@28' 
libevent.a(buffer.o):In function 'evbuffer_write_iovec':undefined reference to 'WSASend@28' 
........................

这里是生成文件:

生成文件 1

HEAD_PATH_FLAGS=-IC:/Python27/include -ID:/boost/include/boost-1_52 -ID:/libevent/include
LIB_PATH_FLAGS=-LD:/boost/lib -LD:/libevent/lib -LC:/Python27/libs
LIB_FLAGS=-lboost_python-mgw46-s-1_52 -Wl,Bstatic -levent -Wl,Bdynamic -lpython27 -lwsock32
SOURCE=test.o 
all:$SOURCE
g++ $HEAD_PATH_FLAGS $SOURCE $LIB_PATH_FLAG $LIB_FLAGS -fPIC -shared -o test.dll

生成文件 2

HEAD_PATH_FLAGS=-IC:/Python27/include -ID:/boost/include/boost-1_52 -ID:/libevent/include
LIB_PATH_FLAGS=-LD:/boost/lib -LD:/libevent/lib -LC:/Python27/libs
LIB_FLAGS=-lboost_python-mgw46-s-1_52 -lpython27 -lwsock32
SOURCE=test.o D:/libevent/lib/libevent.a
all:$SOURCE
g++ $HEAD_PATH_FLAGS $SOURCE $LIB_PATH_FLAG $LIB_FLAGS -fPIC -shared -o test.dll

为什么会这样?我怎样才能让它编译没有错误?

【问题讨论】:

【参考方案1】:

您应该链接到libws2_32.a,正如那里定义的WSASendWSARecv。将-lws2_32 添加到您的链接器命令中。

【讨论】:

@Lol4t0,谢谢,编译成功。

以上是关于Mingw+MSYS 中的 libevent 静态编译错误的主要内容,如果未能解决你的问题,请参考以下文章

编译libevent源代码(Windows)

Windows 中的 MSYS 和 MinGW 需要啥

Windows 中的 Libmtp (msys/mingw):运行问题

MSYS2/MinGW64 中的 ICU 58 未定义参考

msys2 找不到 mingw64

MSYS2 MinGW 不包括 mingw-get 包管理器