Android源码编译报错ninja: ‘kernel/arch/arm64/boot/Image‘, needed by ‘out/target/product/nanopc-t4/kernel‘

      只针对我当前遇到的问题,不是所有报这个错都是我这个原因,还要是动手动脑自己看输出打印判断问题所在;答案在最后,看根因的就慢慢看,看结果的请直接跳尾部!

      手上有块rk3399的开发板,买的时候只出到8.0,最近看到已适配10.0,就clone下来耍一耍,我用的系统是parrot,用了三四年了,虽然界面不是最炫酷的但是是真心喜欢,可以推荐给大家,它既集成了交叉编译环境(省去了你使用ubuntu时自己安装各种支持环境的时间,都按需求安装了也不一定兼容,编译源码时一大堆问题....),也集成了安全测试工具(只针对还未使用过parrot的,老手绕行。懂得都懂,自己研究着玩玩就行了,不要干其它坏事),开发环境等,4.0后汉化也做的很好。

          接下来就是一顿操作猛如虎,先给它来个./build-nanopc-t4.sh -F -M,本以为全程托管就好了,结果...报错了,out下没有某文件基本都是环境出了问题,因为发布的源码很少有在脚本上有问题的,所以首先要查环境;

中间查到了几个报错打印,例如xxxx get_info.h 没有权限,vi报错的mk 其实就只有一句echo "#define xxxx" >> get_info.h,看样子只是没有权限创建文件而已,自己给它touch get_info.h一个空文件,只让脚本往里追加内容就行了,还有一两个报错 忘了截图就不一一列举了,直接看导致ninja: 'kernel/arch/arm64/boot/Image', needed by 'out/target/product/nanopc-t4/kernel'最致命的报错:(不是所有的致命错误都显示红字的,要自己判断哪些会影响编译,最好都查查,多多益善,编译时打印跑的飞快,很多报错都不会被注意到,也有时看表面是这样子,其实是那样子..~ 就比如这里感觉是device-tree-compiler有问题,其实是gcc版本问题,得一个方案一个方案的排查,我排查了三四个小时才找到真正的原因,草率了)

百度了下都是在说没有"设备树编译工具“,但查了下系统里是有安装device-tree-compiler的(你们的可能是这个原因)

最后找到了个真正的解决方案,参考[链接],其实就是gcc版本高了,我系统里有gcc 9,10两个版本,默认为10. 改为9的话就可以正常编译了,不会报上面scrpits/dtc/dtc error 1的问题了,所以就可以正常生成out下所需的kernel等文件了。

版本里如果有多个gcc版本,不用删除,直接修改默认的gcc版本就可以了,同时要注意g++版本也要同时修改!参考修改默认gcc/g++默认版本[链接]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peak wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值