1. sudo apt-get install autoremove 自动删除不需要的依赖库。
2.ldconfig -p 查看当前的共享库缓存:
3.pkg-config , PKG_CONFIG_PATH 是什么?
1.pkg-config,在编译软件时,pkg-config 会根据 .pc 文件自动生成正确的 “头文件路径(-I/usr/include/X11)”“库文件路径(-L/usr/lib)” “链接选项(-lX11 -lXext)”
例如,编译依赖 libxcb 的程序时,pkg-config 会从 xcb.pc 中读取信息,生成完整的编译命令
2,PKG_CONFIG_PATH,
默认情况下,pkg-config 只在标准路径(如 /usr/lib/pkgconfig)中查找 .pc 文件。如果你将库安装到 非标准路径(如 /usr/local/lib 或自定义目录),需要通过 PKG_CONFIG_PATH 指定这些路径:
export PKG_CONFIG_PATH=/自定义路径/lib/pkgconfig:$PKG_CONFIG_PATH
3,举例:
假设你手动编译安装了 xcb-proto 到 /usr/local,但运行 pkg-config --modversion xcb-proto 返回空值,说明 pkg-config 找不到它的 .pc 文件。
添加 /usr/local/lib/pkgconfig 到 PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ##临时生效
echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc
source ~/.bashrc ##永久生效
验证
pkg-config --modversion xcb-proto # 应输出版本号(如 1.15.2)
pkg-config --cflags xcb-proto # 检查头文件路径
pkg-config --libs xcb-proto # 检查库链接选项
pkg-config --list-all | grep xcb # 检查是否有 riscv 的库
4.为什么我编译出来的xextproto没有动态库,只有pkgconfig文件夹
在编译 xextproto 时只生成了 pkgconfig 文件夹而没有动态库(如 libXext.so),这是 完全正常的行为.
xextproto 是 X11 扩展协议的描述文件(头文件和 XML 定义),而不是一个运行时库。它的作用是为其他 X11 扩展库(如 libXext、libXfixes)提供:
协议头文件(如 X11/extensions/Xext.h)
pkg-config 元数据(xextproto.pc)
因此,它 不会生成任何动态库(.so)或静态库(.a)。
5.库libXext.so在路径/usr/lib/x86_64-linux-gnu/libXext.so 下 和 /home/a8pillarscreen/Tool/qt_tool_xext/install/lib下分别存在,我将/home/a8pillarscreen/Tool/qt_tool_xext/install/lib添加到~/.bashrc的LD_LIBRARY_PATH中,但是locate libXext.so,只打印了 /usr/lib/x86_64-linux-gnu/libXext.so,为什么?
locate 命令的工作原理
locate 通过预建的数据库(mlocate.db)搜索文件路径,与 LD_LIBRARY_PATH 完全无关,它只会显示系统中实际存在的文件路径,而不会考虑运行时库加载顺序。
LD_LIBRARY_PATH 的作用
该变量仅在 程序运行时 影响动态链接器(ld.so)的库搜索顺序
为什么 locate 不显示自定义路径的库?
mlocate.db 未更新,如果库文件是最近添加的,可能需要更新数据库:
sudo updatedb # 更新 locate 数据库(ok)
浙公网安备 33010602011771号