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

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.kler.cn/a/322247.html

相关文章:

  • 2022 年 9 月青少年软编等考 C 语言二级真题解析
  • C++系列之继承
  • 阿里数字人工作 Emote Portrait Alive (EMO):基于 Diffusion 直接生成视频的数字人方案
  • 机器学习day7-线性回归3、逻辑回归、聚类、SVC
  • 【Vue笔记】基于vue3 + element-plus + el-dialog封装一个自定义的dialog弹出窗口组件
  • 道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会
  • QMT如何获取股票基本信息?如上市时间、退市时间、代码、名称、是否是ST等。QMT量化软件支持!
  • 基于SSM+小程序的医院挂号登录管理系统(医院4)(源码+sql脚本+视频导入教程+文档)
  • 一六九、go使用泛型封装一个可以应用于任何字段的模糊匹配
  • 【C/C++】速通涉及string类的经典编程题
  • Redis的数据类型和编码方式
  • uniapp实现图片上下浮动效果
  • 多速率信号处理-半带滤波器
  • 【漏洞复现】灵当CRM multipleUpload.php接口处存在文件上传漏洞
  • 高通Android 12 push framework.jar和service.jar
  • VMware Tools安装——VMware Tools是灰色的,不能安装, (不带图形化界面的虚拟机,只有命令行的模式!!!)
  • 【网络底层原理】I/O多路复用技术select、poll和epoll详解与比较
  • uniapp微信小程序遮罩层u-popup禁止底层穿透
  • 如何延长变阻器的使用寿命?
  • 【解密 Kotlin 扩展函数】扩展函数的底层原理(十八)
  • 9.23 My_string.cpp
  • 浅谈计算机视觉的学习路径1
  • C++ : 多态
  • uni-app App版本更新
  • 【永磁同步电机(PMSM)】 6. 矢量空间算法(SVPWM)
  • fuzzer实战-magma-模糊测试