编译payload-dumper-go报错lzma.h: No such file or directory如何解决
编译payload-dumper-go找不到lzma.h报错解决
报错复现
在项目根目录执行go build时触发编译失败,错误输出如下:
❯ go build # github.com/spencercw/go-xz /home/ecarroll/go/pkg/mod/github.com/spencercw/go-xz@v0.0.0-20181128201811-c82a2123b492/compression.go:36:10: fatal error: lzma.h: No such file or directory 36 | #include <lzma.h> | ^~~~~~~~ compilation terminated.
错误原因
依赖组件github.com/spencercw/go-xz是基于cgo实现的xz压缩逻辑封装,编译时需要调用系统本地的LZMA(xz)开发库头文件与链接文件。系统默认不会预装这类开发组件,缺失时就会触发头文件找不到的错误,直接终止编译流程。
修复方案
根据当前使用的操作系统,执行对应命令安装lzma开发依赖即可:
- Debian、Ubuntu、Linux Mint等Debian系Linux发行版:
sudo apt update && sudo apt install -y liblzma-dev - Fedora、RHEL、CentOS、Rocky Linux等RHEL系Linux发行版:
# 新版本系统使用dnf sudo dnf install -y xz-devel # CentOS 7及以下旧版本替换为yum # sudo yum install -y xz-devel - Arch Linux、Manjaro等Arch系Linux发行版:
sudo pacman -S --noconfirm xz - macOS(Homebrew环境):
brew install xz - Windows(MSYS2/MinGW64环境):
pacman -S mingw-w64-x86_64-xz
注:若安装依赖后仍提示头文件缺失,可执行
pkg-config --cflags liblzma确认pkg-config能否正常识别lzma库,返回为空时手动将lzma库的pkgconfig路径加入PKG_CONFIG_PATH环境变量即可。
依赖安装完成后,回到项目根目录重新执行go build即可正常完成编译。
内容的提问来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

