Android11编译32go版本提示”32bit Kernels unsupported by MPGen“

【问题描述】:
在编译32go项目时,内核阶段提示”32bit Kernels unsupported by MPGen“错误
【问题分析】:
初步分为为32go内核相关dts配置异常,因为自己定制了内核dts部分,32位系统下(arch/arm/boot/dts/qcom)下相关的Makefile需要同步修改
【解决方案】:
修改arch/arm/boot/dts/qcom目录下的Makefile,以及arch/arm/boot/dts/qcom子目录下的Makefile,让其链接arch/arm64/boot/dts/qcom下的dts内容来构建

kernel/msm-4.19/arch/arm/boot/dts/Makefile内容:

# SPDX-License-Identifier: GPL-2.0

include $(srctree)/arch/arm64/boot/dts/Makefile

kernel/msm-4.19/arch/arm/boot/dts/qcom/Makefile内容:

# SPDX-License-Identifier: GPL-2.0-only

include $(srctree)/arch/arm64/boot/dts/qcom/Makefile

kernel/msm-4.19/arch/arm/boot/dts/qcom/xxx/Makefile内容:

# SPDX-License-Identifier: GPL-2.0-only

include $(srctree)/arch/arm64/boot/dts/qcom/xxx/Makefile
$(obj)/%.dtb: $(src)/../../../../../arm64/boot/dts/qcom/xxx/%.dts FORCE
    $(call if_changed_dep,dtc)

ifeq ($(CONFIG_BUILD_ARM64_DT_OVERLAY),y)
$(obj)/%.dtbo:$(src)/../../../../../arm64/boot/dts/qcom/xxx/%.dts FORCE
    $(call if_changed_dep,dtc)
    $(call if_changed,dtbo_verify)

dtbs: $(addprefix $(obj)/,$(dtb-y)) $(addprefix $(obj)/,$(dtbo-y))
else
dtbs: $(addprefix $(obj)/,$(dtb-y))
endif
clean-files := *.dtb

【问题2】:编译user版本报错”32bit Kernels unsupported by MPGen“
错误信息如下:

WARNING: EXPORT symbol "gsi_write_channel_scratch" [vmlinux] version generation failed, symbol will not be versioned.
Traceback (most recent call last):
  File "/fwork1/jenkins/workspace/sc126_a12/LA.UM.9.15.2/vendor/qcom/proprietary/qrsp/mpgen/mpgen.py", line 172, in <module>
    main()
  File "/fwork1/jenkins/workspace/sc126_a12/LA.UM.9.15.2/vendor/qcom/proprietary/qrsp/mpgen/mpgen.py", line 99, in main
    kernel.get_kernel(vmlinux)
  File "/fwork1/jenkins/workspace/sc126_a12/LA.UM.9.15.2/vendor/qcom/proprietary/qrsp/mpgen/mpgen_kernel.py", line 131, in get_kernel
    raise UnsupportedKernelArch("32bit Kernels unsupported by MPGen")
UnsupportedKernelArch: 32bit Kernels unsupported by MPGen
FATAL ERROR: 32bit Kernels unsupported by MPGen

确认是”32bit Kernels unsupported by MPGen“接口中__packed导致,__packed参数具体的修饰左右请自查,这个就是用来告诉编译器用来数据对齐的,最终确认userdebug和user版本的差异在于,debug配置了gcc的优化size的配置CONFIG_CC_OPTIMIZE_FOR_SIZE,在user版本的defconfig配置该功能后问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值