Libevent2.1.8版在Liunx中编译安装遇到的问题
Libevent2.1.8版在Liunx中编译安装遇到的问题
前言:在网上找了很久,都没有一个明确的解决方法,通过分析可能的原因,将自己实际操作及解决的成功结果记录如下,以供遇到相似的问题,能提供思路!
1.安装编译Libevent的流程
## 第一步:生成configure配置文件
./autogen.sh
## 第二步:生成Makefile
./configure
## 第三步:安装编译
make
make install
2.make后出现如下报错信息
3.分析原因
分析一:可能是libevent_openssl.so的动态库没找到
于是安装openssl.so,使用的版本是1.1.1,最好对应libevent2.1.8,避免不必要的麻烦,当然熟悉了,随便用那个版本,只有能编译通过,正常使用就行。
安装openssl1.1.1的步骤:
.config shared --prefix=/usr/local/ --openssldir=/usr/local/openssl
说明:可以通过./Configure --help
查看使用说明;如果libevent中要使用openssl模块,则先安装openssl。
指定动态库路径:
将openssl生成的动态库指定到/usr/local/lib目录下,重新编译libevent:
make clean
make
结果:还是出现上图所示的错误信息
分析二:没有找到openssl的头文件,所以无法使用动态库中的方法
从报错信息中看,是sample/le-proxy.c
编译出的错,那我们找到sample目录下的include.am
文件:
我们看OPENSSL_INCS对应的目录是啥,在libevent的安装目录下,打开Makefile查看:
没有加载,说明头文件是在当前目录下的头文件中,我们在libevent的include目录下查看:
发现没有openssl对应的头文件,所以才会找不到openssl动态库中的方法。
4.解决方法
将安装的openssl和解压的libevent下的include目录做个链接
ln -s /usr/local/include/openssl /root/libevent-master/include/openssl
然后在编译libevent:
make
make install
可发现,已经编译成功!
5.总结
像这种无定义的方法的引用,出现的问题只有两种情况:
- 找不到对应的库文件
- 找不到对应的头文件
所以需要自己进行指定头文件和库文件(动态库或静态库),麻烦的就是这点!