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
)所需的连接和缓存文件.