error while loading shared libraries错误解决办法
Last updated on 8 months ago
最近想实现 Reactor 多线程模式,因为线程池可以使用了,接下来尝试 将epoll 封装下一些api, 后来想到 有个框架 Libevent 也是基于事件通知机制的库,将epoll封装成api,方便调用,以前有看过一点,但是没有用过,所以现在站在巨人的肩膀上看看他们是怎样写的:
看源码之前需要将这个代码跑通,起码会用才行,从编译源代码,到运行demo都遇到了些问题,这里做个总结吧
clone 源码然后 make 这些就不说了,make 时出现个问题
1 |
|
后来查了下 是 openssl 版本不不兼容, 期初我在官网下的 Libevent是2.0.2
openssl 是什么: openssl则是SSL的实现版(SSL https加密哪个 ),另外openssl还包含了公钥私钥的生成、摘要生成等各种工具
libevent 2.0.x版本的 openssl < 1.1.0 ,不兼容,现在 Linux openssl 普遍 版本都是1.1.0+
解决方法: 用 libevent 2.1.x+ 以上的版本
使用 libevent 库 编译过了,执行程序时报错
1 |
|
问题 找不到共享库?
原因: 编译器只会使用 /lib 和 /usr/lib 这两个目录下的库文件, 编译源码的时候没有指定 库安装的目录,运行程序需要链接动态库时就找不到,所以现在需要添加 这个库的目录
解决方法:
- 先看下系统 是否有这个库 ,找到 库的位置
动态库文件所在的目录 在 **/etc/ld.so.conf ** ,将 libevent-2.1.so.6所在的目录添加到该文件下
执行 /sbin/ldconfig -v 才会生效
如果还不行,而且确实有 有库存在,可以看下 是否是 权限问题