查已安装库文件无统一命令:ldconfig -p 查缓存中可加载的动态库,ldd 查指定程序运行时依赖,dpkg -l/rpm -ql 查包所含库文件,pkg-config 查开发元信息,三者覆盖不同维度,混用才完整。

查已安装的库文件,没有统一命令——ldd、ldconfig、pkg-config、dpkg -L、rpm -ql 各管一段,混用会漏掉关键信息。得先分清你要查的是“运行时动态库”“某个程序依赖的库”,还是“某个包自带的库文件”。
查系统当前加载的共享库路径和缓存
这是最常被跳过的一步:很多库明明装了却找不到,是因为没进 ld.so.cache。
-
ldconfig -p列出所有已被ldconfig缓存的共享库(即能被ldd或运行时直接加载的) - 输出里每行格式是
libxxx.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libxxx.so.1,注意箭头右边才是真实路径 - 如果刚把
.so放进/usr/local/lib却查不到,大概率是没运行sudo ldconfig刷新缓存 -
/etc/ld.so.conf和/etc/ld.so.conf.d/*.conf里的路径才参与缓存构建;LD_LIBRARY_PATH是运行时临时加的,ldconfig -p不会显示它
查某个可执行文件实际依赖哪些库
ldd 不是“查系统装了什么”,而是“查这个二进制启动时会去哪找库”。结果里出现 not found 意味着运行时失败,不是没装,是路径没配对。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
-
ldd /usr/bin/python3输出所有直接/间接依赖,包括libc.so.6这类基础库 - 若某库标为
not found,先用find /usr -name 'libxxx.so*' 2>/dev/null确认是否存在,再看是否在ldconfig -p输出里 -
ldd对静态链接的二进制无效(如某些 Go 程序),会显示statically linked - 不要用
ldd查 shell 脚本——它只对 ELF 可执行文件有效
查某个包里包含哪些 .so 文件
包管理器知道库文件属于谁,但得用对命令,否则查到的是空或报错。
- Debian/Ubuntu:
dpkg -L libssl1.1 | grep '\.so$'——dpkg -L必须接已安装的包名,不能是openssl这种别名 - RHEL/CentOS/Fedora:
rpm -ql openssl-libs | grep '\.so$'——rpm -ql的包名要精确,rpm -qa | grep openssl先确认真实包名 - Arch:
pacman -Ql openssl | grep '\.so$' - 如果只知道库文件路径想反查包名:
dpkg -S /usr/lib/x86_64-linux-gnu/libssl.so.1.1或rpm -qf /usr/lib64/libssl.so.1.1
查系统级库的元信息(版本、提供者、用途)
pkg-config 不是万能的,它只对正确安装了 .pc 文件的库有效,很多手动编译安装的库没有。
-
pkg-config --list-all | grep ssl列出所有注册了 pkg-config 描述的库 -
pkg-config --modversion openssl查版本,pkg-config --libs openssl查链接参数 - 如果提示
Package openssl was not found,不代表没装 OpenSSL,只是没装libssl-dev(Debian)或openssl-devel(RHEL)这类开发包 -
whereis libssl只返回命名匹配的路径,不可靠;find /usr -name 'libssl*.so*' 2>/dev/null更直接但慢
最容易被忽略的点:库文件可能存在于多个位置(/lib、/usr/lib、/usr/local/lib、/usr/lib/x86_64-linux-gnu),而不同工具只扫其中一部分。查不到时,优先确认你查的是“缓存中的库”“程序依赖的库”,还是“包自带的库”——三者来源不同,不能互相替代。










