动态库路径问题及无法成功链接问题-创新互联

问题

./read_cp: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory

创新互联是一家专业提供铁西企业网站建设,专注与做网站、成都网站建设HTML5、小程序制作等业务。10年已为铁西众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

这是今天在执行一个c可执行文件时候报的错。百度了一下发现是找不到动态库的原因

原因

执行ldd命令可以查看执行文件所需的动态库

linux-vdso.so.1 (0x00007fff825f0000)
    libevent-2.1.so.6 =>not found
    libc.so.6 =>/lib/x86_64-linux-gnu/libc.so.6 (0x00007f757f209000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f757f49f000)

发现动态库指向是找不到的。但是执行查找库命令是可以找的到库的

sudo find / -name libevent-2.1.so.6

结果是可以找得到的

/usr/lib/libevent/lib/libevent-2.1.so.6
/usr/local/lib/libevent-2.1.so.6
/usr/lib64/libevent-2.1.so.6

这说明不是我安装的问题。我又试着查了一下共享库路径,发现因为没有执行ldconfig命令。

[ldconfig命令]  https://linux265.com/course/linux-command-ldconfig.html 

解决

由于是刚下载的共享库,程序按照默认的共享库路径是找该共享库,但没生成链接, 如果共享库文件安装到了/lib或/usr/lib目录下(lib和、usr/lib是默认共享库安装路径), 那么需执行一下ldconfig命令。我的问题就是执行一下ldconfig命令就好了

关于下载动态库,如果大家有问题可以尝试改一下路径,关于路径配置文件是/etc/ld.so.conf,可以添加路径,添加你安装了的库的路径,详细参考

[/etc/ld.so.conf详解]  https://www.cnblogs.com/chris-cp/p/3591306.html 

若在/lib和/usr/lib之外的目录中添加库文件,而又无权限在/etc/ld.so.conf中写入路径,可以用添加环境变量LD_LIBRARY_PATH的做法让系统识别到库文件。   

export LD_LIBRARY_PATH "路径"

但如果是安装到/lib和/usr/lib里面的东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个库会找不到

下载好库推荐执行一下ldconfig。

问题解决 因为没有创建出动态装入程序(ld.so)所需的连接和缓存文件

@ubuntu:~/Desktop/linux_net/libeventfiles$ ldd read_cp
    linux-vdso.so.1 (0x00007fff825f0000)
    libevent-2.1.so.6 =>/usr/local/lib/libevent-2.1.so.6 (0x00007f757f431000)
    libc.so.6 =>/lib/x86_64-linux-gnu/libc.so.6 (0x00007f757f209000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f757f49f000)
​

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:动态库路径问题及无法成功链接问题-创新互联
转载源于:http://pwwzsj.com/article/ccgsgi.html