Ubuntu22.04编译Android内核遇openssl/opensslv.h缺失错误求解决
Ubuntu 22.04编译Android内核openssl头文件缺失问题解决办法
问题详情
编译时触发如下错误:
/LineageOS/LinageOS/kernel/xiaomi/nitrogen/scripts/sign-file.c:23:30: fatal error: openssl/opensslv.h: No such file or directory #include <openssl/opensslv.h>
已确认libssl-dev为最新版本(3.0.2-0ubuntu1.6),安装openssl也无法解决。
可行解决步骤
手动指定头文件与库路径
Ubuntu 22.04的OpenSSL 3.x头文件路径可能未被内核编译脚本识别,编译时直接传入路径参数:make EXTRA_CFLAGS="-I/usr/include/openssl" EXTRA_LDFLAGS="-L/usr/lib/x86_64-linux-gnu/"也可以修改内核目录下的Makefile,添加上述参数到对应变量中,避免每次编译重复输入。
安装OpenSSL 1.x兼容开发包
部分旧版Android内核仅支持OpenSSL 1.x,Ubuntu 22.04可手动下载安装兼容包:wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.20_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb libssl-dev_1.1.1f-1ubuntu2.20_amd64.deb安装完成后重新执行编译流程。
修正头文件引用路径
先通过命令查找系统中opensslv.h的实际位置:find /usr/include -name opensslv.h找到路径后,编辑
sign-file.c,将#include <openssl/opensslv.h>替换为实际路径(例如#include <openssl3/openssl/opensslv.h>)。关闭模块签名验证配置
若不需要模块签名,可临时关闭该功能:- 执行
make menuconfig进入内核配置界面 - 找到
Enable loadable module support -> Module signature verification,取消勾选 - 保存配置后重新编译内核
- 执行
内容的提问来源于stack exchange,提问作者Ethan Xie
相关产品推荐
相关产品推荐

