当前位置: 首页 > ai >正文

A33-vstar报错记录:ERROR: build kernel Failed

解决ERROR: build kernel Failed

在编译了多次发现,每次都是在编译完了lcd.ko之后会弹出这个问题在这里插入图片描述

主要是就报了这个ERROR: build kernel Failed错误提示,但是没有报详细的错误,与我平时编译器直接报错的方式不同,但这也是一种经验的累积和成长,好消息是,我最终解决了这个问题.

解释错误

首先我发现每次都是在编译完lcd.ko这个模块后报错的,而这个是单独在Linux-3.4后出现的,也就是我们先找到这行命令,这行编译完内核代码后的命令

第一步:查找“build kernel Failed”出处

grep -rn "build kernel Failed" buildroot/

执行后显示:

qin@qin-ubuntu:~/vstar/Linux-SDK/dragonboard$ grep -rn "build kernel Failed" buildroot/
buildroot/scripts/mkcmd.sh:362:    [ $? -ne 0 ] && mk_error "build kernel Failed" && return 1
qin@qin-ubuntu:~/vstar/Linux-SDK/dragonboard$ 

我们发现报错位置在buildroot/scripts/mkcmd.sh:362,也就是在mkcmd.sh
这个文件的362行处,这行的内容:

(cd ${LICHEE_KERN_DIR} && [ -x ${build_script} ] && ./${build_script})
[ $? -ne 0 ] && mk_error "build kernel Failed" && return 1

我们发现,是执行了build_script这个脚本

第二步 我们要知道 ${build_script} 是什么脚本

现在执行这个命令,查看 build_script 的值:

grep build_script buildroot/scripts/mkcmd.sh | grep '='

输出:

qin@qin-ubuntu:~/vstar/Linux-SDK/dragonboard$ grep build_script buildroot/scripts/mkcmd.sh | grep '='local build_script="scripts/build.sh"local build_script="scripts/build.sh"local build_script="scripts/build.sh"local build_script="scripts/build.sh"
qin@qin-ubuntu:~/vstar/Linux-SDK/dragonboard$ 

现在我们可以确认:buildroot/scripts/mkcmd.sh 中执行的就是:

cd ${LICHEE_KERN_DIR} && ./scripts/build.sh

那么,我们来单独执行这条命令:

cd linux-3.4
./scripts/build.sh

输出错误:

qin@qin-ubuntu:~/vstar/Linux-SDK/dragonboard$ cd linux-3.4
./scripts/build.sh
make: arm-linux-gnueabi-gcc: 没有那个文件或目录
Building kernel
make: arm-linux-gnueabi-gcc: 没有那个文件或目录CHK     include/linux/version.hCHK     include/generated/utsrelease.hCC      scripts/mod/empty.o
/bin/sh: 1: arm-linux-gnueabi-gcc: not found
make[2]: *** [scripts/Makefile.build:308:scripts/mod/empty.o] 错误 127
make[1]: “include/generated/mach-types.h”已是最新。
make[1]: *** [scripts/Makefile.build:443:scripts/mod] 错误 2
make[1]: *** 正在等待未完成的任务....
make: *** [Makefile:506:scripts] 错误 2
make: *** 正在等待未完成的任务....CC      kernel/bounds.s
/bin/sh: 1: arm-linux-gnueabi-gcc: not found
make[1]: *** [/home/qin/vstar/Linux-SDK/dragonboard/linux-3.4/./Kbuild:36:kernel/bounds.s] 错误 127
make: *** [Makefile:985:prepare0] 错误 2
qin@qin-ubuntu:~/vstar/Linux-SDK/dragonboard/linux-3.4$ 

我们从错误就已经可以看到问题所在:当前环境下 找不到交叉编译工具链 arm-linux-gnueabi-gcc,导致内核 scripts/build.sh 脚本失败,最终 build.sh 脚本才会报 build kernel Failed。
说白了,就是交叉编译环境没有弄好。

解决问题

其实我一开始是弄了环境变量的,但是很乱,直接把交叉编译环境的绝对路径加到build.sh的前面就行:

export ARCH=arm
export CROSS_COMPILE=/home/qin/vstar/Linux-SDK/dragonboard/brandy/gcc-linaro/bin/arm-linux-gnueabi-
export PATH=/home/qin/vstar/Linux-SDK/dragonboard/brandy/gcc-linaro/bin:$PATH

或者直接加到build.sh中:

#!/bin/bash# 进入脚本所在目录,保证相对路径正确
cd "$(dirname "$0")"# 交叉编译器路径(相对路径,根据你的目录结构调整)
export CROSS_COMPILE="$(pwd)/brandy/gcc-linaro/bin/arm-linux-gnueabi-"
export PATH="$(pwd)/brandy/gcc-linaro/bin:$PATH"
export ARCH=arm# 你的后续build脚本逻辑...
buildroot/scripts/mkcommon.sh "$@"

这个用的是相对路径,会比较通用

http://www.xdnf.cn/news/15689.html

相关文章:

  • 【PTA数据结构 | C语言版】我爱背单词
  • 五分钟掌握 TDengine 数据文件的工作原理
  • 鸿蒙开发--端云一体化--云对象
  • C++ 程序设计考量表
  • 人工智能day9——模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • SGLang 推理框架核心组件解析:请求、内存与缓存的协同工作
  • mpiigaze的安装过程一
  • 美团闪购最新版 mtgsig1.2
  • 语音大模型速览(三)- cosyvoice2
  • Maven学习总结(62)—— Maven 打包瘦身和提速解决方案
  • 应急响应-Windows资源监视器
  • HTTPie: 开发者友好的http客户端工具
  • 深度学习零基础入门(3)-图像与神经网络
  • 读书笔记(学会说话)
  • 嵌入式系统内核镜像相关(十六)
  • 数据查找 二叉查找树
  • # Redis-stable 如何在Linux系统上安装和配置
  • java常见的jvm内存分析工具
  • C语言-一维数组,二维数组
  • 菱形继承 虚继承
  • 快速安装GitLab指南
  • go安装使用gin 框架
  • web3 区块链技术与用
  • 【论文精读】基于共识的分布式量子分解算法用于考虑最优传输线切换的安全约束机组组合
  • Django母婴商城项目实践(五)- 数据模型的搭建
  • UniApp TabBar 用户头像方案:绕过原生限制的实践
  • Selenium 攻略:从元素操作到 WebDriver 实战
  • STM32之L298N电机驱动模块
  • 【iOS】MRC与ARC
  • Fish Speech:开源多语言语音合成的革命性突破