Google 删除了 Android 内核的交叉编译器。他们现在在哪里?
Google removed cross compilers for Android Kernel. Where are they now?
到目前为止,我已经使用了 UBERTC 预构建的交叉编译器,但是在编译 android 内核时出现错误,而且他们自 2016 年以来就没有更新过他们的东西,所以我只想寻找替代方案。
Google 显然应该有它们。但是我找不到它们。它们应该是 here,但回购是空的,最后一次提交说:
Remove aarch64-linux-android gcc-4.9 libs and includes
Android has moved to LLVM.
The bins were already removed. Remove everything else except for OWNERS.
所以,我想他们已经把它们转移到别处了。但是在哪里呢?
我不想听到您需要编译整个 AOSP 树才能到达编译器。我真的希望有别的办法。
我找到了旧的工具链。有趣的是:在清除存储库之前的最新提交 由于某种原因不包含 gcc
。所以我不得不“爬”上 git 树以找到包含它的树。这里是32-bit ARM toochain and 64-bit ARM toolchan。这是 2019 年的 gcc 4.9
。
他们的意思
Android has moved to LLVM.
是你应该能够 cross-compile 内核与 clang
和 llvm
并且不应该再使用他们的 stand-alone 解决方案。但他们没有提供任何关于如何做到这一点的信息。所以是的,干得好。
下载看起来像这样:
# clone the repo, it will be empty
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 toolchain
# go to the repo folder
cd toolchain
# use the hash of the commit to restore the commit which actually contains the toolchain
git checkout e9b2ab0932573a0ca90cad11ab75d9619f19c458
对于像我这样还没有完全了解 llvm
和 clang
的人,还有一些替代工具链。 Here is one from arm.com based on gcc 11.2
. There are also Linaro 个。
无论如何,您有时应该使用旧工具链来构建旧内核,因为新编译器往往会抛出更多警告,默认情况下 Makefile
将其视为错误。例如,我无法使用 arm.com 编译我的内核,因为它们太聪明并且发现了太多警告,我还没有找到办法禁用。修改 Makefile
似乎不是一个有效的选项,因为它有 ~2k 行长。
如果有人知道如何禁用它们,我也很想知道。但现在我会尝试坚持使用旧内核的 google 工具链。
GLHF,哈哈。
到目前为止,我已经使用了 UBERTC 预构建的交叉编译器,但是在编译 android 内核时出现错误,而且他们自 2016 年以来就没有更新过他们的东西,所以我只想寻找替代方案。
Google 显然应该有它们。但是我找不到它们。它们应该是 here,但回购是空的,最后一次提交说:
Remove aarch64-linux-android gcc-4.9 libs and includes
Android has moved to LLVM.
The bins were already removed. Remove everything else except for OWNERS.
所以,我想他们已经把它们转移到别处了。但是在哪里呢?
我不想听到您需要编译整个 AOSP 树才能到达编译器。我真的希望有别的办法。
我找到了旧的工具链。有趣的是:在清除存储库之前的最新提交 由于某种原因不包含 gcc
。所以我不得不“爬”上 git 树以找到包含它的树。这里是32-bit ARM toochain and 64-bit ARM toolchan。这是 2019 年的 gcc 4.9
。
他们的意思
Android has moved to LLVM.
是你应该能够 cross-compile 内核与 clang
和 llvm
并且不应该再使用他们的 stand-alone 解决方案。但他们没有提供任何关于如何做到这一点的信息。所以是的,干得好。
下载看起来像这样:
# clone the repo, it will be empty
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 toolchain
# go to the repo folder
cd toolchain
# use the hash of the commit to restore the commit which actually contains the toolchain
git checkout e9b2ab0932573a0ca90cad11ab75d9619f19c458
对于像我这样还没有完全了解 llvm
和 clang
的人,还有一些替代工具链。 Here is one from arm.com based on gcc 11.2
. There are also Linaro 个。
无论如何,您有时应该使用旧工具链来构建旧内核,因为新编译器往往会抛出更多警告,默认情况下 Makefile
将其视为错误。例如,我无法使用 arm.com 编译我的内核,因为它们太聪明并且发现了太多警告,我还没有找到办法禁用。修改 Makefile
似乎不是一个有效的选项,因为它有 ~2k 行长。
如果有人知道如何禁用它们,我也很想知道。但现在我会尝试坚持使用旧内核的 google 工具链。
GLHF,哈哈。