使用Buildroot编译项目时遇xzcat版本XZ_5.2未找到错误求助
解决
xzcat: /lib/x86_64-linux-gnu/liblzma.so.5: version 'XZ_5.2' not found 错误 这个问题本质是你的系统里安装的liblzma.so.5库版本低于xz工具(包括xzcat)要求的XZ_5.2版本,不管是直接运行xz命令还是Buildroot编译时调用xz工具都会触发这个问题。下面是几种靠谱的解决方法:
方法一:重新安装系统自带的xz相关包(Debian/Ubuntu系优先)
如果你的系统是Debian、Ubuntu或者基于它们的发行版,直接通过包管理器更新并重新安装xz工具和依赖库就能解决:
sudo apt update && sudo apt install --reinstall xz-utils liblzma5
这条命令会拉取最新的包信息,然后重新安装xz-utils(包含xzcat等工具)和liblzma5,替换掉系统里旧版本的库文件。完成后再运行xz --version验证是否正常。
方法二:手动编译安装高版本的xz工具
如果系统源里的xz版本还是达不到要求(比如你用的是比较老的发行版),可以手动编译安装xz的源码包:
- 下载xz 5.2及以上版本的源码包(建议选稳定版,比如5.4.x系列)
- 解压源码包:
tar -xf xz-*.tar.xz cd xz-* - 配置编译参数,指定安装到系统目录:
./configure --prefix=/usr - 编译并安装:
make && sudo make install - 安装完成后,运行
xz --version确认版本和库依赖是否正常。
方法三:临时/永久指定高版本库路径(适合不想替换系统库的场景)
如果你已经有一个高版本的liblzma.so.5(比如从其他地方编译好的),可以通过指定库路径来让xz工具加载它:
- 临时生效:运行命令时直接指定
LD_LIBRARY_PATH:LD_LIBRARY_PATH=/path/to/your/high-version-liblzma xz --version - 永久生效:把库路径添加到系统的库配置中:
- 创建一个新的配置文件,比如
sudo nano /etc/ld.so.conf.d/xz.conf - 在文件里写入高版本liblzma所在的目录路径,比如
/path/to/your/high-version-liblzma - 执行
sudo ldconfig让配置生效
- 创建一个新的配置文件,比如
额外提示(针对Buildroot编译场景)
如果是Buildroot编译时触发的这个问题,还要检查:
- Buildroot的配置中是否指定了正确的xz版本(可以通过
make menuconfig进入Toolchain或Package相关选项确认) - 本地系统的库是否干扰了交叉编译环境,建议尝试在干净的容器(比如Docker)中编译Buildroot项目,避免系统库的影响。
内容的提问来源于stack exchange,提问作者Jeffrey Urban
相关产品推荐
相关产品推荐

