use*_*692 1 linux assembly android clang cross-compiling
因此,在为我的1plus手机编译android内核时,经过3天的多次尝试,我放弃了并尝试在这里询问是否有人以前遇到过这个问题。
这个错误对我来说有点模糊,但我觉得问题来自于我最近对 GNU/Linux 发行版(Gentoo)的更改,它在不应该的情况下以某种方式覆盖了 AS 环境变量;它在组装 VDSO 时失败了,但遗憾的是我不知道最重要的事情来自哪里。(也许他们修改了 make 命令以允许支持标志覆盖等..)
编辑,小版本:
make RANLIB=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-ranlib CC='/media/sda2/git/linux-x86/clang-bootstrap/bin/clang -fintegrated-as' LD=/media/sda2/git/linux-x86/clang-bootstrap/bin/ld.lld AR=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-ar AS=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-as NM=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-nm OBJCOPY=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-objcopy OBJDUMP=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-objdump READELF=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-readelf OBJSIZE=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-size STRIP=/media/sda2/git/linux-x86/clang-bootstrap/bin/llvm-strip
CC kernel/bounds.s
CC arch/arm64/kernel/asm-offsets.s
In file included from arch/arm64/kernel/asm-offsets.c:25:
In file included from ./include/linux/kvm_host.h:39:
In file included from ./arch/arm64/include/asm/kvm_host.h:42:
In file included from ./include/kvm/arm_pmu.h:21:
In file included from ./include/linux/perf_event.h:57:
In file included from ./include/linux/cgroup.h:28:
./include/linux/cgroup-defs.h:475:16: warning: field 'cgrp' with variable sized type 'struct cgroup' not at the end of a struct or class is a GNU extension [-Wgnu-variable-sized-type-not-at-end]
struct cgroup cgrp;
^
1 warning generated.
CALL scripts/checksyscalls.sh
LDS arch/arm64/kernel/vdso/vdso.lds
VDSOA arch/arm64/kernel/vdso/gettimeofday.o
/usr/bin/as: unrecognized option '-EL'
clang-12: error: assembler command failed with exit code 1 (use -v to see invocation)
make[1]: *** [arch/arm64/kernel/vdso/Makefile:57: arch/arm64/kernel/vdso/gettimeofday.o] Error 1
make: *** [arch/arm64/Makefile:201: vdso_prepare] Error 2
Run Code Online (Sandbox Code Playgroud)
环境变量:
# https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
export PATH='/media/sda2/git/aarch64-linux-android-4.9/bin':${PATH}
export LD_LIBRARY_PATH='/media/sda2/git/aarch64-linux-android-4.9/lib':${LD_LIBRARY_PATH}
# git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86
export PATH='/media/sda2/git/linux-x86/clang-bootstrap/bin':${PATH}
export LD_LIBRARY_PATH='/media/sda2/git/linux-x86/clang-bootstrap/lib':${LD_LIBRARY_PATH}
export ARCH=arm64
export SUBARCH=arm64
export CROSS_COMPILE='aarch64-linux-android-'
export CROSS_COMPILER=$PATH
export CLANG_TRIPLE='aarch64-linux-gnu-'
export KCFLAGS='-pipe -O3'
export KCPPFLAGS='-pipe -O3'
Run Code Online (Sandbox Code Playgroud)
使用的内核: https ://github.com/LineageOS/android_kernel_oneplus_sm8250
有任何想法吗?
我使用 Google 的 clang 预构建编译器(可以自己构建,但为了赢得时间)以便使用 polly 编译 android 内核,因为 Gentoo LLVM 团队显然还没有使用它的标志。
更糟糕的是,我正在考虑使用 Ubuntu binutils/automake 等/创建一个 docker 环境来编译这个内核,但这对我来说没有多大意义,因为我应该能够在我自己的主机系统上完成它。
感谢您的帮助和照顾。
我解决了。删除链接器的 LD=/media/sda2/git/linux-x86/clang-bootstrap/bin/ld.lld 后,它起作用了,我想 clang 链接器默认使用 /usr/bin/as 而不是 aarch64- linux-android-as 这是谷歌预先构建的。我需要进一步调查此事。一旦我发现更多,我会编辑这篇文章。
归档时间: |
|
查看次数: |
7125 次 |
最近记录: |