全志科技
直播中

茶缸子

11年用户 538经验值
私信 关注
[问答]

怎样去解决删除Tina内核根目录下的.config文件编译失败的问题呢

  • 问题描述
    客户删除tina内核根目录下的.config文件后,按照正常流程编译会失败,log如下,提示找不到内核根目录下的.config文件。
  • make[4]: *** No rule to make target `/home/XXX/work/tina/out/rxxx-evb1/compile_dir/target/linux-rxxx-evb1/linux-x.x.x/.config', needed by `/home/XXX/work/tina/out/rxxx-evb1/compile_dir/target/linux-rxxx-evb1/linux-x.x.x/.modules'.  Stop.
  • make[4]: Leaving directory `/home/XXX/work/tina/target/allwinner/rxxx-evb1'
  • make[3]: *** [compile] Error 2
  • make[3]: Leaving directory `/home/XXX/work/tina/target/allwinner'
  • make[2]: *** [target/allwinner/compile] Error 2
  • make[2]: Leaving directory `/home/XXX/work/tina'
  • make[1]: *** [/home/XXX/work/tina/out/rxxx-evb1/staging_dir/target/stamp/.target_compile] Error 2
  • make[1]: Leaving directory `/home/XXX/work/tina'
  • Build failed - please re-run with -j1 to see the real error message
  • 客户尝试重新source/lunch、make kernel_menuconfig等操作,均编译失败,导致不能恢复。
    AW向客户提供longon、Tina等多套SDK,客户可能延续其他SDK的开发习惯,删除内核.config,其他SDK编译时会自动生成,目前Tina不会,因此导致上述问题。
    log提示找不到内核.config文件,Tina下生成内核.config操作位于tina/build/kernel-defaults.mk文件中的Kernel/Configure/Default定义下。
    其主要逻辑如下:
    • 根据tina的defconfig、内核的linux-x.x配置等一起在内核根目录下生成.config.set文件
    • 比较内核根目录下.config.set与.config.prev文件,如果相同,不进行任何操作;如果不同,将.config.set复制为.config,同时将.config.set复制为.config.prev
    如果重新source/lunch,不做任何改动,生成的.config.set与上次保存的配置.config.prev是一样的,因此不会重新生成.config文件。
    同理如果执行make kernel_menuconfig,不修改配置,生成的.config.set依旧与上次保存的.config.prev一致,也不会重新生成.config文件。


回帖(1)

程娇

2021-12-29 11:26:05
根据.config的生成逻辑,可以有多种处理办法。


  • 方法一:删除内核根目录下的.config.prev。当然删除tina/out目录也行,其作用相当于删除.config.prev
  • 方法二:执行make kernel_menuconfig,修改一些配置,保存。目的是确保.config.set与.config.prev不同,重新生成.config
  • 方法三:使用附件补丁0001-kernel-defaults-cp-.config.set-to-.config-when-there.patch,该补丁作用是,如果.config不存在,将.config.set复制为.config。



举报

更多回帖

发帖
×
20
完善资料,
赚取积分