Ошибка при компиляции ядра Linux для Android 11 (R) Beta версии 1 с clang-r383902

Я использую машину Ubuntu 20.04 с последней версией установленных платформенных инструментов и (я считаю) всеми необходимыми зависимостями.

Я создал новый каталог ~/beta1-kernel-coral и в этом каталоге клонировал ядро:

git clone -b android-msm-coral-4.14-r-beta-1 https://android.googlesource.com/kernel/msm/

Я заметил, что используемая версия clang была clang-r383902. Я загрузил этот каталог и извлек его, так что у меня было два отдельных каталога в ~/beta1-kernel-coral: msm и clang-r383902.

Изнутри ~/beta1-kernel-coral/msm я выполнил две команды:

make floral_defconfig
make menuconfig

Затем, используя руководство Натана Чанса из 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-

Ядро начало компилироваться, пока я не получил следующий результат:

https://pastebin.com/61pkd6uf

В руководстве Натана он советует использовать:

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.

1 ответ

Решение

Ядра CAF НЕ являются основными ядрами, и вы не можете их скомпилировать как таковые. Вы должны запустить make distclean и указать выходной каталог для каждой команды make, включая defconfig.

Пример: сделать O=out

Если вы не укажете O=out для каждой команды make, вы столкнетесь с этими ошибками. Значение, присвоенное O, может быть любым, не обязательно, но вы не можете собрать ядро ​​в том же каталоге, что и исходный код.

Измените это:

сделать floral_defconfig

сделать menuconfig

К этому:

сделать floral_defconfig O=out

сделать menuconfig O=out

Постройте его с помощью:

сделать O= вне

Не забудьте сначала сделать distclean в исходном каталоге

Другие вопросы по тегам