构建安卓内核ld vdso32时出现错误,未识别的仿真模式:armelf_linux_eabi

0 人关注

我尝试从谷歌官方文件中构建安卓内核,使用官方 build.sh 从头开始,但得到的错误信息如下。

  VDSOSYM include/generated/vdso-offsets.h
  LDS     arch/arm64/kernel/vdso32/vdso.lds
  VDSOC32   arch/arm64/kernel/vdso32/vgettimeofday.o
  VDSOA32   arch/arm64/kernel/vdso32/sigreturn.o
  HOSTCC  arch/arm64/kernel/vdso32/../../../arm/vdso/vdsomunge
clang-5.0: warning: optimization flag '-fno-delete-null-pointer-checks' is not supported [-Wignored-optimization-argument]
  VDSOL32   arch/arm64/kernel/vdso32/vdso.so.raw
/..//bin/ld: unrecognised emulation mode: armelf_linux_eabi
Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu i386pep i386pe elf64bpf
clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [/home/tonki/aosp/newkernel/private/msm-google/arch/arm64/kernel/vdso32/Makefile:138: arch/arm64/kernel/vdso32/vdso.so.raw] Error 1
make[2]: *** [arch/arm64/Makefile:242: vdso_prepare] Error 2
make[1]: *** [Makefile:152: sub-make] Error 2
make: *** [Makefile:24: __sub-make] Error 2

我看了一下arch/arm64/kernel/vdso32/Makefile文件,发现这一行 CC_ARM32 := $(CC) $(CLANG_TARGET_ARM32),它用clang --target=arm-linux-androideabi来链接vdso32.raw图像,但用/usr/bin/ld来链接。
我的操作系统是Arch Linux发行版,没有gcc-arm-linux-androideabi的官方软件包,我可以用pacman像Ubuntu的apt工具来安装。
分支。AOSP kernel/android-msm-crosshatch-4.9-pie-qpr2。
Device: Pixel 3XL.
Kernel-config: official b1c1_defconfig(arch/arm64/configs/b1c1_defconfig)。
问题。我怎样才能解决这个问题?我在这里没有想法,谢谢

4 个评论
Atte
哪个内核版本/分支?哪种设备?你用的是什么defconfig?
Atte
你在调用 build.sh 时是否使用了任何特定的 BUILD_CONFIG= 选项?我想默认的是build目录下的build.config,你能分享一下它的内容吗?
Atte
我猜它是在使用 repo sources 中预置的 gcc/clang 工具链时失败了。
@Atte 我使用了默认的build/build.sh和默认的软链接。 build.config link to private/msm-google/build.config .谢谢Atte,我用这个方法解决了这个问题。 link
android
linux-kernel
jdir.s
jdir.s
发布于 2022-08-26
1 个回答
jdir.s
jdir.s
发布于 2022-09-02
已采纳
0 人赞同

我试图找到错误的细节。
我打开make verbose message ouput。

  clang --target=arm-linux-androideabi  -Wp,-MD,arch/arm64/kernel/vdso32/.vdso.so.raw.d -nostdinc -isystem /home/tonki/aosp/newkernel/prebuilts-master/clang/host/linux-x86/clang-4393122/lib64/clang/5.0.1/include -I/home/tonki/aosp/newkernel/private/msm-google/arch/arm64/include -I./arch/arm64/include/generated/uapi -I./arch/arm64/include/generated  -I/home/tonki/aosp/newkernel/private/msm-google/include -I./include -I/home/tonki/aosp/newkernel/private/msm-google/arch/arm64/include/uapi -I/home/tonki/aosp/newkernel/private/msm-google/include/uapi -I./include/generated/uapi -include /home/tonki/aosp/newkernel/private/msm-google/include/linux/kconfig.h -D__KERNEL__ -Qunused-arguments -mlittle-endian   -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname=linux-vdso.so.1 -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 -nostdlib -shared -mfloat-abi=soft -Wl,-T arch/arm64/kernel/vdso32/vdso.lds arch/arm64/kernel/vdso32/vgettimeofday.o arch/arm64/kernel/vdso32/sigreturn.o -o arch/arm64/kernel/vdso32/vdso.so.raw