使用 clang-r383902 为 Android 11 (R) Beta 版本 1 编译 Linux 内核时出错
Error when Compiling Linux Kernel for Android 11 (R) Beta version 1 with clang-r383902
我正在使用 Ubuntu 20.04 机器,安装了最新版本的 platform-tools 和(我相信)所有必要的依赖项。
我创建了一个新目录 ~/beta1-kernel-coral 并在这个目录中克隆了内核:
git clone -b android-msm-coral-4.14-r-beta-1 https://android.googlesource.com/kernel/msm/
我注意到使用的 clang 版本是 clang-r383902。我下载了 this directory 并将其解压缩,这样我在 ~/beta1-kernel-coral 中就有了两个单独的目录:msm 和 clang-r383902。
从 ~/beta1-kernel-coral/msm 中,我 运行 两个命令:
make floral_defconfig
make menuconfig
接下来,使用 Nathan Chance's guide from Github,我 运行 以下命令:
PATH="/home/jherwig/beta1-kernel-coral/clang-r383902/android_prebuilts_clang_host_linux-x86_clang-6443078-10.0/bin:/usr/bin:/usr/bin:${PATH}" make -j$(nproc --all) ARCH=arm64 CC=clang CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi-
内核开始编译,直到我收到以下输出:
在 Nathan 的指南中,他指示使用:
PATH="<path to clang folder>/bin:<path to 64-bit gcc folder>/bin:<path to 32-bit gcc folder>/bin:${PATH}" \ ...
自从我安装了 gcc-multilib,我认为 <path to 64-bit gcc folder>
和 <path to 32-bit gcc folder>
会在 /usr/bin 中。当我在终端输入 which gcc
时,我得到 /usr/bin/gcc.
CAF 内核不是主线内核,您不能这样编译它们。您必须 运行 make distclean 并为每个 make 命令指定一个输出目录,包括 defconfig
示例:
让 O=out
如果您没有为每个 make 命令指定 O=out,您将遇到这些错误
分配给 O 的值可以是任何东西,不一定是 out 但你不能在与源相同的目录中构建内核
改变这个:
使floral_defconfig
制作菜单配置
为此:
使floral_defconfigO=输出
make menuconfig O=out
构建它:
制作 O=out
记得先在源码目录做distclean
我正在使用 Ubuntu 20.04 机器,安装了最新版本的 platform-tools 和(我相信)所有必要的依赖项。
我创建了一个新目录 ~/beta1-kernel-coral 并在这个目录中克隆了内核:
git clone -b android-msm-coral-4.14-r-beta-1 https://android.googlesource.com/kernel/msm/
我注意到使用的 clang 版本是 clang-r383902。我下载了 this directory 并将其解压缩,这样我在 ~/beta1-kernel-coral 中就有了两个单独的目录:msm 和 clang-r383902。
从 ~/beta1-kernel-coral/msm 中,我 运行 两个命令:
make floral_defconfig
make menuconfig
接下来,使用 Nathan Chance's guide from Github,我 运行 以下命令:
PATH="/home/jherwig/beta1-kernel-coral/clang-r383902/android_prebuilts_clang_host_linux-x86_clang-6443078-10.0/bin:/usr/bin:/usr/bin:${PATH}" make -j$(nproc --all) ARCH=arm64 CC=clang CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi-
内核开始编译,直到我收到以下输出:
在 Nathan 的指南中,他指示使用:
PATH="<path to clang folder>/bin:<path to 64-bit gcc folder>/bin:<path to 32-bit gcc folder>/bin:${PATH}" \ ...
自从我安装了 gcc-multilib,我认为 <path to 64-bit gcc folder>
和 <path to 32-bit gcc folder>
会在 /usr/bin 中。当我在终端输入 which gcc
时,我得到 /usr/bin/gcc.
CAF 内核不是主线内核,您不能这样编译它们。您必须 运行 make distclean 并为每个 make 命令指定一个输出目录,包括 defconfig
示例: 让 O=out
如果您没有为每个 make 命令指定 O=out,您将遇到这些错误 分配给 O 的值可以是任何东西,不一定是 out 但你不能在与源相同的目录中构建内核
改变这个:
使floral_defconfig
制作菜单配置
为此:
使floral_defconfigO=输出
make menuconfig O=out
构建它:
制作 O=out
记得先在源码目录做distclean