C / C ++ Cyanogenmod如何使用不同版本的工具链编译内核?

时间:2016-11-05 02:05:22

标签: c++ c kernel cyanogenmod linux-toolchain

我正在尝试为Cyanogenmod 13编译内核。我收到错误

ERROR: modpost: Found 2 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
 To build the kernel despite the mismatches, build with:
'make CONFIG_NO_ERROR_ON_MISMATCH=y'
 (NOTE: This is not recommended)

我读了它here。我需要使用4.7编译我的内核。 如何在cyanogenmod构建过程中选择工具链的版本?

2 个答案:

答案 0 :(得分:1)

我相信您需要设置gcc 4.7版并使用CC变量将其设置为编译器。例如。 make target CC=/bin/gcc4.7

更多信息herehere

答案 1 :(得分:0)

感谢@nopasara和他的宝贵意见。

所以我进一步研究并发现内核与arm-eabi tool chain而不是arm-linux-androideabi工具链兼容。所以这是我使用的命令

export PATH=$PATH:~/android/system/prebuilts/gcc/linux-x86/arm/arm-linux-eabi-4.7/bin/ && export ARCH=arm && export SUBARCH=arm && export CROSS_COMPILE=arm-linux-eabi- && make msm8226_defconfig O=~/android/system/out/target/product/E6790/obj/KERNEL_OBJ

 make   O=~/android/system/out/target/product/E6790/obj/KERNEL_OBJ zImage -j4

使用此Cyanogenmod将以下行添加到BoardConfig.mk

  TARGET_KERNEL_CROSS_COMPILE_PREFIX := arm-eabi-

并使用

 export TARGET_LEGACY_GCC_VERSION=4.7 

或编辑〜/ android / system / build / core / combo / TARGET_linux-arm.mk并在

中设置版本
  $(combo_2nd_arch_prefix)TARGET_LEGACY_GCC_VERSION := 4.7