error while loading shared libraries: liblog4cpp.so.5: cannot open shared object file: No such file

今天在在写一个共享单车服务器的时候出现了一个奇怪的问题,主要问题是在编译的时候整个项目的代码模块在链接其他库的时候是没有任何的错误的,但是在启动项目的时候出现了这样的问题:

error while loading shared libraries: liblog4cpp.so.5: cannot open shared object file: No such file

如下图所示:

也就是系统没法找到log4cpp这个日志模块的动态链接库,这到底市怎么回事儿呢,经过我不断的尝试还是这样的一个结果,我想应该是我在安装log4cpp的时候没有做好响应的配置导致的,我在查阅了很多的文档之后终于找出了问题的解决方法

找不到lib这个文件

1 .错误原因:

1.1可能我们的系统确实没有包含该共享库(lib.so文件)或者该共享库的版本不对

1.2.我们的系统已经安装了该共享库,但是在执行需要调用该共享库程序的时候,按照系统的默认共享路径找不到该文件,一般系统默认共享库的路径是/usr/lib/, 我们在装第三方库的时候,库文件默认是装在/usr/local/lib/下头文件是装在/usr/local/include下面的,如果装完第三方库之后不经过一定的设置那么在启动程序的时候很提示找不到  .so文件是正常的。

2.解决方案:

我在被这个问题坑了一小把之后,决定把这个问题的解决方案整理好,避免初学服务器的小伙伴跟我移一样踩同样的坑(说的不好不喜可以喷我哦,毕竟人在成长的时候需要外界不停的鞭策自己嘛)

安装好共享库以后注意共享路径的设置如下:

1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令(如果不用./configure --prefix=绝对路径,的情况下是默认安装在/usr/local/lib/下面的)

 ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.

2) 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它”非/lib或/usr/lib”目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:

比如我在这里安装log4cpp,我没有指定,最后安装在/usr/local/lib下面的,执行 cd /usr/local/lib 进入此目录,在执行ls 如下图:

这就是我刚刚的log4cpp的静态库和动态库,头文件在/usr/local/include下,在这一层目录的基础上执行cd ../include 然后执行ls命令,如图所示:

 图中红框处就是该库的头文件了,

我们在确认我们的库安装在/usr/local/lib下面以后然秩序将其路径加入到/etc/ld.so.conf即可

执行如下命令即可:sudo su vi /etc/ld.so.conf 然后就进入到了.conf文件,然后按下i键(切换为编辑模式)另起一行输入 /usr/local/lib ,输入完毕时候按下Esc将vi切换成命令模式,然后再wq保存。

保存完毕之后,执行ldconfig -v,然后重新编译运行即可成功解决问题,效果如下图所示:

 

谢谢大家的阅读,想学习编程,进大厂的小伙伴,可以点歌关注,交流交流哦!

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这个错误的原因是在运行"./Log4cppTest"时,系统无法找到共享库"liblog4cpp.so.5",导致无法打开共享对象文件。 解决这个问题的方法是确保"liblog4cpp.so.5"库文件存在于系统的共享库路径中,并且路径已正确配置。您可以通过以下步骤来解决这个问题: 1. 首先,确认您已经安装了"liblog4cpp.so.5"库文件。您可以在终端中使用以下命令来查找该文件: ``` $ find / -name liblog4cpp.so.5 ``` 如果该文件存在,则会返回文件的路径。如果不存在,您需要下载并安装该库文件。 2. 一旦确认库文件存在,您需要将其路径添加到系统的共享库路径中。可以通过以下命令将库文件路径添加到/etc/ld.so.conf文件中: ``` $ sudo echo "/path/to/liblog4cpp.so.5" >> /etc/ld.so.conf ``` 请将"/path/to/liblog4cpp.so.5"替换为实际的库文件路径。 3. 更新共享库缓存,使系统能够找到新添加的库文件路径: ``` $ sudo ldconfig ``` 现在,您应该可以成功运行"./Log4cppTest",而不再出现"error while loading shared libraries: liblog4cpp.so.5: cannot open shared object file: No such file or directory"的错误信息了。请按照上述步骤进行操作,确保路径和命令的准确性。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [VS code出现错误:g++.exe: error: Hello: No such file or directory g++.exe: error: Word.cpp: No such ...](https://blog.csdn.net/qq_45708377/article/details/112732294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [cpptest:C++学习笔记 包括 侯捷讲解的系列CPP课程以及UNP、APUE等](https://download.csdn.net/download/weixin_42122306/19205361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值