红帽系统运行程序找不到共享库问题
问题出现
在centos上执行一个使用protobuf的程序时,提示了如下错误
问题原因
第一个原因是没有主机上没有安装该共享库,导致连接失败
第二种原因是已经安装了该共享库,但是程序执行调用该共性库时,程序按照默认路径找不到该共享库,因为很多共享的开源库安装的默认安装的路径时/usr/local/lib,而红帽系统一般只会默认在/lib、/use/lib和动态库配置文件中寻找共享库,因此就会出现找不到的问题
解决办法
1、直接将共享的开源库安装到/lib或者/usr/lib目录中,然后执行一下ldconfig命令
2、如果和共享库安装在了其他非默认路径下,例如/usr/local/lib下,需要在配置文件中将该目录写入
# vim /ect/ld.so.conf
在配置文件中加上共享库的目录(如图中的/usr/local/lib)然后执行ldconfig
ldconfig的作用
主要是在默认的搜索目录(/lib和/usr/lib)以及动态库的配置文件/ect/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(lib*.so.*),进而创建出动态装入程序(ld.so)所需要的链接和缓存文件,缓存文件默认/etc/ld.so.cache,此文件中保存已排序好的动态链接库名列表
通常当用户安装了一个新的动态共享库时,就需要手动调用ldconfig命令,确保系统将新安装的动态库添加到动态库配置文件中