【问题标题】:error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file:加载共享库时出错:libevent-1.4.so.2:无法打开共享对象文件:
【发布时间】:2013-06-11 05:48:32
【问题描述】:

我正在使用libevent做一个程序,我在A和B两台电脑上编译我的程序,在A上执行成功,但是在B上出现以下错误:

error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

仅供参考:

A和B都是fedora系统,我在A和B都下载了libevent-1.4.14b-stable.tar.gz,通过configure/make/make install安装。

在A上

    [esolve@kitty temp]$ uname -r
    3.6.10-2.fc16.x86_64
    [esolve@kitty temp]$ ls -al /usr/local/lib64 | grep libevent
    [esolve@kitty temp]$ ls -al /usr/lib64 | grep libevent
    [esolve@kitty temp]$ ls -al /usr/lib | grep libevent
    lrwxrwxrwx   1 root root       32 May 21 00:25 libevent-1.4.so.2 -> /usr/local/lib/libevent-1.4.so.2
    [esolve@kitty temp]$ ls -al /usr/local/lib | grep libevent
    lrwxrwxrwx   1 root root     21 May 21 00:22 libevent-1.4.so.2 -> libevent-1.4.so.2.2.0
    -rwxr-xr-x   1 root root 435304 May 21 00:22 libevent-1.4.so.2.2.0
    -rw-r--r--   1 root root 793178 May 21 00:22 libevent.a
    lrwxrwxrwx   1 root root     26 May 21 00:22 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.2.0
    -rwxr-xr-x   1 root root 160352 May 21 00:22 libevent_core-1.4.so.2.2.0
    -rw-r--r--   1 root root 269580 May 21 00:22 libevent_core.a
    -rwxr-xr-x   1 root root    988 May 21 00:22 libevent_core.la
    lrwxrwxrwx   1 root root     26 May 21 00:22 libevent_core.so -> libevent_core-1.4.so.2.2.0
    lrwxrwxrwx   1 root root     27 May 21 00:22 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.2.0
    -rwxr-xr-x   1 root root 342122 May 21 00:22 libevent_extra-1.4.so.2.2.0
    -rw-r--r--   1 root root 631804 May 21 00:22 libevent_extra.a
    -rwxr-xr-x   1 root root    995 May 21 00:22 libevent_extra.la
    lrwxrwxrwx   1 root root     27 May 21 00:22 libevent_extra.so -> libevent_extra-1.4.so.2.2.0
    -rwxr-xr-x   1 root root    953 May 21 00:22 libevent.la
    lrwxrwxrwx   1 root root     21 May 21 00:22 libevent.so -> libevent-1.4.so.2.2.0

在 B 上:

    root@kitch server_agent]# uname -r
    3.8.5-201.fc18.x86_64
    [root@kitch server_agent]# ls -al /usr/lib | grep libevent
    lrwxrwxrwx   1 root root      32 Jun 14 17:09 libevent-1.4.so.2 -> /usr/local/lib/libevent-1.4.so.2
    [root@kitch server_agent]# ls -al /usr/local/lib | grep libevent
    lrwxrwxrwx   1 root root     21 Jun 14 16:03 libevent-1.4.so.2 -> libevent-1.4.so.2.2.0
    -rwxr-xr-x   1 root root 435524 Jun 14 16:03 libevent-1.4.so.2.2.0
    -rw-r--r--   1 root root 805650 Jun 14 16:03 libevent.a
    lrwxrwxrwx   1 root root     26 Jun 14 16:03 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.2.0
    -rwxr-xr-x   1 root root 164070 Jun 14 16:03 libevent_core-1.4.so.2.2.0
    -rw-r--r--   1 root root 270748 Jun 14 16:03 libevent_core.a
    -rwxr-xr-x   1 root root    994 Jun 14 16:03 libevent_core.la
    lrwxrwxrwx   1 root root     26 Jun 14 16:03 libevent_core.so -> libevent_core-1.4.so.2.2.0
    lrwxrwxrwx   1 root root     27 Jun 14 16:03 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.2.0
    -rwxr-xr-x   1 root root 339502 Jun 14 16:03 libevent_extra-1.4.so.2.2.0
    -rw-r--r--   1 root root 642916 Jun 14 16:03 libevent_extra.a
    -rwxr-xr-x   1 root root   1001 Jun 14 16:03 libevent_extra.la
    lrwxrwxrwx   1 root root     27 Jun 14 16:03 libevent_extra.so -> libevent_extra-1.4.so.2.2.0
    -rwxr-xr-x   1 root root    959 Jun 14 16:03 libevent.la
    lrwxrwxrwx   1 root root     21 Jun 14 16:03 libevent.so -> libevent-1.4.so.2.2.0
    [root@kitch server_agent]# ls -al /usr/lib64 | grep libevent
    [root@kitch server_agent]# ls -al /usr/local/lib64 | grep libevent

为什么我的程序在 B 上出现这个错误,有什么解决办法吗? 谢谢!

【问题讨论】:

    标签: linux compiler-errors shared-libraries libevent


    【解决方案1】:

    您的“A”系统有一个从/usr/lib/libevent-1.4.so.2/usr/local/lib/libevent-1.4.so.2 的符号链接,但系统“B”没有。很有可能,如果您创建它,那么一切都会开始工作。

    命令应该如下。

    sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2
    

    作为替代方案,您可以将LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 作为系统“B”上的临时修复程序导出,将/usr/local/lib 添加到库路径中作为测试。

    【讨论】:

    • 我运行命令 'sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2' 我从 /usr 获得符号链接/lib/libevent-1.4.so.2改成/usr/local/lib/libevent-1.4.so.2,问题依旧
    • 但导出 LD_LIBRARY_PATH 有效。但是,在导出之前,我只有 $LD_LIBRARY_PATH 是空的,为什么?
    • 可能是你的B系统和A系统的默认ld路径不同。这并不能解释为什么符号链接不起作用。从这里进行诊断最好查看您的 ld.so.conf 设置,以查看正在检查哪些目录以查找库。至于 LD_LIBRARY_PATH,它为空是完全正常的,我包含对现有值的引用只是为了防止您在 shell 配置中可能有一个集合。
    • sudo ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 .....对于libevent-1.4.so.2一样,因为你有 x86_64。
    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 2016-05-11
    • 2018-10-19
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多