sudo运行程序 找到不到动态链接库

ldd ./serialTest

可以找到libserial.so.1

sudo ldd ./serialTest

libserial.so.1 => not found !

加入export LD_LIBRARY_PATH=xxxx 后同样找不到!

原因:

sudo运行程序为root用户运行程序,export 只能是对当前普通用户有效。

解决方法:

/ect/ld.so.conf.d 文件夹中添加文件serial.conf 内容为自己编译库的位置

/{自己编译库的位置}

然后

sudo ldconfig	

刷新一下全局动态链接库

果然就找到啦!

ldd 与 ldconfig 的科普相关

ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令

ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

主要是在默认搜寻目录(/lib/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.

sudo ldd 应用程序时 显示缺少库的解决方法

山和山不相遇,人与人要相逢