00. 目录
01. 问题描述
编译libevent的时候报一下错误:
make
make all-recursive
make[1]: Entering directory `/libevent-2.0.21-stable'
Making all in .
make[2]: Entering directory `/libevent-2.0.21-stable'
/bin/bash ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include
-g -O2 -Wall -fno-strict-aliasing -pthread -MT bufferevent_openssl.lo -MD -MP -MF .deps/bufferevent_openssl.Tpo
-c -o bufferevent_openssl.lo bufferevent_openssl.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing
-pthread -MT bufferevent_openssl.lo -MD -MP -MF .deps/bufferevent_openssl.Tpo -c bufferevent_openssl.c
-fPIC
-DPIC -o .libs/bufferevent_openssl.o
bufferevent_openssl.c: In function 'bio_bufferevent_new':
bufferevent_openssl.c:106:3: error: dereferencing pointer to incomplete type
02. 问题分析
这是 libevent 与 openssl 版本不兼容导致。
一般来说,libevent和openssl的版本对应关系如下
libevent | openssl |
---|---|
2.1.x | 1.1 |
2.0.x | 1.0 |
03. 问题解决
3.1 安装最新稳定版本的libevent。
3.2 安装匹配的openssl版本。
查看ubuntu对应的openssl版本
deng@itcast:~$ openssl version -a
OpenSSL 1.1.1f 31 Mar 2020
built on: Mon Apr 20 11:53:50 2020 UTC
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=
/build/openssl-P_ODHM/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security
-DOPENSSL_TLS_SECURITY_LEVEL=2 -
DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -
DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM
-DMD5_ASM
-DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -
D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
deng@itcast:~$
ubuntu建议安装libevent2.1版本。
04. 附录
4.1 libevent-2.1.8-stable.tar.bz2下载
下载:libevent-2.1.8-stable.tar.bz2