技术知识库
编译 Linux 5.0 时缺少 OpenSSL 头文件
编译 Linux 5.0 时缺少 OpenSSL 头文件
摘要
ARM64 内核编译在构建主机程序 scripts/extract-cert 和 scripts/sign-file 时失败,因为 Ubuntu 主机缺少 OpenSSL 开发头文件。安装 libssl-dev 后,使用原来的 make 命令继续编译即可。
错误证据
scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
scripts/sign-file.c:25:10: fatal error: openssl/opensslv.h: No such file or directory
原因
extract-cert 用于从证书中提取信息,sign-file 用于给内核模块签名。它们是在当前 Ubuntu 电脑上运行的构建辅助程序,所以日志使用 HOSTCC。编译它们需要 OpenSSL 的 C 语言头文件和开发库;只安装 openssl 命令行程序并不等于安装开发包。
修复
sudo apt update
sudo apt install libssl-dev
随后重新运行原编译命令:
make ARCH=arm64 \
CROSS_COMPILE=aarch64-linux-gnu- \
O=build/arm64 \
-j"$(nproc)"
make 会复用已经成功生成的文件,只补编失败和未完成的目标,通常不需要清理构建目录。