BUG——IMX6ULL编译正点原子Linux内核报错

         最初编译的是正点原子改过的Linux内核,可能是版本问题,一直报错,无法成功编译。然后换成NXP官方Linux内核6.6版本,初始编译虽然也报各种错,但都是缺少库或相关工具,全部安装后就可以成功编译出镜像了(人都麻了(x_x))

        最后测来测去,发现主要原因是gcc版本不对。之所以使用NXP最新的内核版本没有问题,那是因为我的gcc编译器是14.0版本的,与NXP这个6.6版本发布时间相距不远。一般来说,要确保你下载的源码比你使用的gcc版本要新,不然容易出现不兼容的问题。

        如果你使用的是正点原子提供的linux内核源码,那么就要确保你的gcc编译器版本低于7.5,至于10.3、11.5、14都不行。确切地来说,下面这个链接里面的编译器基本可用,我用的是7.5版本的。

Linaro Releases

        下面将分为两个部分,【编译Linux内核】是正常步骤,【报错历程】是我在错误使用gcc版本时遇到的问题,只不过最后没能解决就不了了之了。

 

编译Linux内核

        在gcc编译器版本正确的情况下,初次编译

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make distclean
make imx_v7_deconfig
make -j16# 给虚拟机分配多少处理器,就在-j后面加上多少数字,-j后面最好不要空,否则容易卡死系统崩溃

        编译之后大概率会遇到一个"yylloc"重定义的问题,解决办法很简单,在/scripts/dtc目录下,找到dtc-lexer.lex.c_shipped文件,并把里面的对应变量定义YYLTYPE yylloc;前面加上extern。详情见博客编译linux内核时multiple definition of `yylloc‘错误的解决方案

        之后再编译就不会出现任何问题了。其中正点原子build.sh脚本里说用到gcc版本是5.3,但我用上5.3后,依旧会出现这个重定义的问题,解决后就不会继续报错了。

        如果你的gcc编译版本过新,那么初次编译也会遇到这个问题,只不过解决了这个后还会出现一堆不兼容问题。

        正常情况下,编译后会产生镜像文件如zImage,如果编译最后没有产生镜像,反而是突然停下了,也没有报错提示。那么多半是因为并行编译导致,使用单核编译再试一遍(只有make,没有“-j”),这时会出现报错提示。

       

 

 报错历程

        下面是我遇到的部分报错历程,这是在gcc版本过新(14.0)的情况下测试的。总之,即便一步一步照着报错提示去查教程修改,最后也难逃无法解决的链接问题

【1】fatal error: curses.h: No such file or directory

sudo apt-get install libncurses-dev

【2】出现多重定义的问题

我采用的是

编译itop4412 uboot失败,提示multiple definition of `yylloc‘; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first_编译提示genneric-asm-offsets.h-CSDN博客

【3】出现下面报错

  LD      crypto/crypto_hash.o
  LD      crypto/cryptomgr.o
  LD      crypto/built-in.o
  LD      fs/ext4/ext4.o
  LD      fs/ext4/built-in.o
make: *** [Makefile:948: fs] Error 2

sudo apt-get install lzop

 安装上面库后,报错减少了

 LD      fs/ext4/ext4.o
 LD      fs/ext4/built-in.o
make: *** [Makefile:948: fs] Error 2

【4】单独使用配置时出现下面问题

 

sudo apt-get install flex
sudo apt-get install bison

【5】

参考博客:

【1】linux内核编译 fatal error: curses.h: 没有那个文件或目录解决办法

【2】解决Linux下交叉编译U-Boot源码时报‘multiple definition of `yylloc‘‘的错误-CSDN博客

【3】Linux驱动开发环境搭建,初次体验开发全流程(必看)_i.mx6ull编译环境是什么-CSDN博客

【5】Linux kernel 编译openssl/bio.h: No such file or directory openssl找不到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 740. 删除并获得点数

原题链接:. - 力扣(LeetCode) 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和…

cscode搭建vue项目

创建前安装环境 ctrlj弹出终端 window需要管理员运行并且授权 node -v # 显示版本号,说明 node 已经装好 npm -v # 显示版本号,说明 npm 可以使用 # 安装cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm -v # 显示版本号&a…

Spring中如何为静态变量注入值

在 Spring 中,如果使用 Value 注解注入值,不能将其应用于 static 字段。Spring 只能为实例变量注入值,不能直接对静态变量进行注入。 使用 PostConstruct 初始化: 如果确实需要在静态上下文中使用该值,可以使用 Post…

机器学习(1)——线性回归、线性分类与梯度下降

文章目录 线性回归线性分类线性可分数据线性不可分数据逻辑回归支持向量机 梯度下降批量梯度下降随机梯度下降批量随机梯度下降 线性回归 概述: 在一元线性回归中,我们假设目标变量y与特征变量x存在线性关系,模型表达式为: y …

【hot100-java】【合并两个有序链表】

记忆中,两个指针合并即可。 建立哨兵节点dum /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { t…

Docker更换阿里容器镜像源

以Mac为例, 一、获取阿里容器镜像加速器地址 访问阿里云官网https://cn.aliyun.com/ 登录阿里云,没有账号就注册一个 登录完成后在搜索框搜索,容器镜像服务,并打开 点击管理控制台,进入管理控制台 左侧点击镜像加速…

【Python入门】20个Python自动化脚本,解放双手、事半功倍

如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享! 在当今的快节奏工作环境中,自动化不再是一种奢侈,而是…

下一代性能怪兽RTX 5090最新规格更新与Blackwell架构解析

据悉,目前各家AIC厂商已经陆续收到NVIDIA的相关资料,RTX 5090、RTX 5080已经正式进入开案阶段,也就是厂商们开始设计各自的产品方案了。不出意外,年初的CES 2025上会看到RTX 5090/5080的发布。 作为NVIDIA的新一代GPU&#xff0c…

【车联网安全】车端知识调研

一、CAN总线: 1、定义: CAN 总线相当于汽车的神经网络,连接车内各控制系统,其通信采用广播机制,各连接部件均可收发控制消息,通信效率高,可确保通信实时性。当前市场上的汽车至少拥有一个CAN网络&#xff0…

Leetcode 3302. Find the Lexicographically Smallest Valid Sequence

Leetcode 3302. Find the Lexicographically Smallest Valid Sequence 1. 解题思路2. 代码实现 题目链接:3302. Find the Lexicographically Smallest Valid Sequence 1. 解题思路 这一题的话由于至多只能够修改一个字符,因此,我们就是要考…

如何进行“服务器内部错误”的诊断 | OceanBase诊断案例

本文作者:任仲禹,爱可生数据库高级工程师,擅长故障分析和性能优化。 的OMS迁移工具具备丰富的功能。但在实际运维场景中,我们可能会遇到各种问题,其中“服务器内部错误”便是一个较为棘手的问题,因为界面上…

PHP 递归遍历目录

本篇文章主要内容为PHP 两种循环递归遍历目录的示例。 目录 while循环 foreach循环 调用及结果 总结 while循环 应用while循环和opendir、readdir函数处理读取路径下所有文件和目录。 具体代码如下: function getDir($path, $space ) {$dir opendir($path)…

【易上手快捷开发新框架技术】nicegui标签组件lable用法庖丁解牛深度解读和示例源代码IDE运行和调试通过截图为证

传奇开心果微博文系列 序言一、标签组件lable最基本用法示例1.在网页上显示出 Hello World 的标签示例2. 使用 style 参数改变标签样式示例 二、标签组件lable更多用法示例1. 添加按钮动态修改标签文字2. 点击按钮动态改变标签内容、颜色、大小和粗细示例代码3. 添加开关组件动…

PHP“===”的意义

在PHP中, 运算符被称为“恒等比较运算符”(Identical Comparison Operator),它用于比较两个变量的值和类型是否完全相同。这个运算符与双等号 (等值比较运算符)不同,后者在比较时会对两边的值进…

美图AI短片创作工具MOKI全面开放 支持生成配乐、细节修改

人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 美图公司近日宣布,其研发的AI短片创作工具MOKI已正式向所有用户开放。这款专注于AI短片创作的工具,提供了包括动画短片、网文短剧等多种类型视频内容的生成能力,致力于为用户带来…

uni-app之旅-day02-分类页面

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言创建cate分支4.1 渲染分类页面的基本结构4.2 获取分类数据4.3 动态渲染左侧的一级分类列表4.4 动态渲染右侧的二级分类列表4.5 动态渲染右侧的三级分类列表4.6 …

linux上,进程管理

命令 ps aux 是一个在 Unix 和类 Unix 系统中非常常用的命令,用于显示当前系统中的运行中的进程信息。这个命令可以提供关于各个进程的详细信息,包括进程ID、CPU 和内存使用率、进程状态、启动时间等。让我们来详细解释一下 ps aux 命令的各个部分&#…

linux-CMake

linux-CMake 1.安装CMake工具2.单个源文件3.多个源文件4.生成库文件5.将源文件组织到不同的目录下6.可执行文件和库文件放置到单独的目录下7.常见的命令 CMake使用。 1.安装CMake工具 sudo apt-get install cmake2.单个源文件 1.先在文件夹里创建两个文件:main.c&…

Vscode超好看的渐变主题插件

样式效果: 插件使用方法: 然后重启,之后会显示vccode损坏,不用理会,因为这个插件是更改了应用内部代码,直接不再显示即可。

cesium实战代码

代码中有一点bug还没改 cesium地球 地形+地形 <html lang="en"><head><style>.cesium-animation-rectButton .cesium-animation-buttonGlow {filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain {fil…