动态库路径问题及无法成功链接问题-创新互联
./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://scyanting.com/article/ccgsgi.html