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

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.lryc.cn/news/592571.html

相关文章:

  • 深入理解Linux文件I/O:系统调用与标志位应用
  • 广东省省考备考(第四十九天7.18)——判断推理:位置规律(听课后强化训练)
  • *SFT深度实践指南:从数据构建到模型部署的全流程解析
  • Linux | Bash 子字符串提取
  • Redis原理之哨兵机制(Sentinel)
  • Android性能优化之网络优化
  • 【锂电池剩余寿命预测】TCN时间卷积神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 如何用Python并发下载?深入解析concurrent.futures 与期物机制
  • 安卓Android项目 报错:系统找不到指定文件
  • python学智能算法(二十四)|SVM-最优化几何距离的理解
  • 【52】MFC入门到精通——MFC串口助手(二)---通信版(发送数据 、发送文件、数据转换、清空发送区、打开/关闭文件),附源码
  • 『 C++ 入门到放弃 』- set 和 map 容器
  • Java Web项目Dump文件分析指南
  • 开源Docmost知识库管理工具
  • spring-cloud微服务部署转单体部署-feign直连调用
  • Windows Server 版本之间有什么区别?
  • 在断网情况下,网线直接连接 Windows 笔记本和 Ubuntu 服务器进行数据传输
  • 华为业务变革项目IPD基本知识
  • 【HCI log】Google Pixel 手机抓取hci log
  • 京东店铺入鼎的全面分析与自研难度评估
  • 70 gdb attach $pid, process 2021 is already traced by process 2019
  • CCF编程能力等级认证GESP—C++4级—20250628
  • 协作机器人操作与编程-PE系统示教编程和脚本讲解(直播回放)
  • 自动化面试题
  • 搜广推校招面经九十五
  • 基于 WinForm 与虹软实现人脸识别功能:从理论到实践
  • 关于我用AI编写了一个聊天机器人……(11)
  • 《每日AI-人工智能-编程日报》--2025年7月18日
  • [JS逆向] 微信小程序逆向工程实战
  • 加速度计和气压计、激光互补滤波融合算法