无法编译Tinker Board 2/2S的Android 11系统,寻求技术支持
解决Tinker Board 2/2S Android 11源码内核编译失败问题
场景说明
在WSL Ubuntu 22.04LTS环境下,编译从TinkerBoard官方Wiki获取的Tinker Board (S) R2.0/Tinker Board 2/2S Android 11源码时,执行以下命令后出现内核编译失败:
source build/envsetup.sh lunch WW_Tinker_Board_2-userdebug ./build.sh -UCKAu
剩余磁盘空间200GB,为Android开发新手,寻求具体解决步骤。
具体解决步骤
1. 补全编译依赖
Ubuntu 22.04默认缺少部分Android 11编译所需依赖,执行以下命令安装:
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
Android 11要求Python 3.8版本,Ubuntu 22.04默认是3.10,需切换版本:
sudo apt install python3.8 python3.8-dev python3.8-distutils sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 sudo update-alternatives --config python3
在弹出的选项中选择Python 3.8作为默认版本。
2. 同步内核子模块
源码下载过程中可能出现内核子模块缺失,进入源码根目录执行:
git submodule sync git submodule update --init --recursive
若使用repo工具下载,可重新同步:
repo sync -c -j$(nproc)
3. 调整WSL资源分配
WSL默认内存/CPU分配不足可能导致编译失败,在Windows系统的C:\Users\<你的用户名>\路径下创建.wslconfig文件,写入以下内容:
[wsl2] memory=8GB processors=4 swap=4GB localhostForwarding=true
保存后重启WSL:
wsl --shutdown
重新打开终端后继续编译。
4. 单独编译内核定位问题
跳过全量编译,先单独编译内核排查具体错误:
cd kernel/rockchip make ARCH=arm64 WW_Tinker_Board_2_defconfig make ARCH=arm64 -j$(nproc)
若出现编译器版本错误,安装Android 11推荐的clang 12:
sudo apt install clang-12 export CC=clang-12
再重新执行内核编译命令。
5. 调整全量编译参数
原命令中的-C参数会清理之前的编译缓存,可先去掉该参数,确保内核编译成功后再执行全量编译:
./build.sh -UKAu
内容的提问来源于stack exchange,提问作者Cherrith
相关产品推荐
相关产品推荐

