imx6ull配置交叉编译环境编译u-boot及linux所遇问题解决记录

文章目录

  • 前言
  • 一、问题 1 及解决方法
    • 1、问题 1 描述
    • 2、问题 1 解决方法
  • 二、问题 2 及解决方法
    • 1、问题 2 描述
    • 2、问题 2 解决方法
  • 三、问题 3 及解决方法
    • 1、问题 3 描述
    • 2、问题 3 解决方法
  • 四、问题 4 及解决方法
    • 1、问题 4 描述
    • 2、问题 4 解决方法


前言

CoM-iMX6UL(L) 是一款兼容 i.MX6UL(L)-x(X=Y0/1/2 三个版本)的高性能、低功耗工业级核心板,主要用于各种工业级、商业级的应用控制终端数据采集和处理、智能物流数据终端、数据中继器、新能源充电桩控制器和计费系统、车载终端数据采集和处理,是 NXF的 i.MX6UL(L)系列产品的一员。

手头有一块 imx6ull-sbc 工控板正在吃灰,芯片是 MCIMX6Y2CVM85AACTAM1726,目前正好派上用场,所以搭一下环境后面用起来,但是在配置交叉环境时遇到了一些问题,花费了一些时间解决,就顺便记录了下来。

在这里插入图片描述


一、问题 1 及解决方法

1、问题 1 描述

我在配置交叉编译环境时,所需要的编译器是 arm-linux-gnueabihf-gcc,且 arm-linux-gnueabihf-gccarm-linux-gnueabihf-gcc-4.9.1 的软连接,也可以看到在 bin 目录下存在此编译器:
在这里插入图片描述
但是当我输入 arm-linux-gnueabihf-gcc -v 查看编译器版本时,出现 bash: arm-linux-gnueabihf-gcc: 没有那个文件或目录 的报错。

我接着使用 file 命令检查文件类型,这个命令会告诉您文件是二进制可执行文件、脚本还是其他类型的文件。

file arm-linux-gnueabihf-gcc-4.9.1

在这里插入图片描述
从文件信息来看,arm-linux-gnueabihf-gcc-4.9.1 是一个为 Intel 80386 架构(即x86架构)编译的 32-bit ELF 可执行文件。这个文件不是为 ARM 架构编译的交叉编译器,而是一个标准的 Linux 可执行文件,且是为较旧的 Linux 内核版本编译的。

问题在于试图在一个不兼容的系统上运行它,因为我目前系统是 64-bit 或非 x86 架构。
在这里插入图片描述
以下是解决方案:

2、问题 1 解决方法

安装 32-bit 的库来运行这个 32-bit 的程序。这里安装 ia32-libs(如果可用)或单独的 32-bit 兼容库:

sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386

再次再终端执行 arm-linux-gnueabihf-gcc -v 查看编译器版本:

arm-linux-gnueabihf-gcc -v

在这里插入图片描述
问题得以解决。

二、问题 2 及解决方法

1、问题 2 描述

编译 u-boot 时报如下错误:

/home/gnep/workspace/6ull/imx6ull-sbc/tools/x86-linux-gnu/usr/gcc/arm-linux-gnueabihf/4.9.1/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.1/cc1: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
make[2]: *** [scripts/Makefile.autoconf:75:include/autoconf.mk] 错误 1
make[1]: *** 没有规则可制作目标“include/config/auto.conf”,由“include/config/uboot.release” 需求。 停止。
make[1]: 离开目录“/home/gnep/workspace/6ull/imx6ull-sbc/src/imx6ull-u-boot-2016.03”
make: *** [Makefile:8:u-boot] 错误 2

遇到的错误表明在编译过程中缺少必需的共享库 libz.so.1。这个库是 Zlib 压缩库的一部分,常用于很多程序和系统工具中。下面是解决这个问题的步骤:

2、问题 2 解决方法

①、安装 Zlib 库

sudo apt install zlib1g zlib1g-dev

②、确认库是否正确安装
安装完成后,可以使用 ldconfig 命令查看库是否被系统正确识别:

sudo ldconfig -p | grep libz.so.1

这将显示系统已识别的 libz.so.1 库的路径。
在这里插入图片描述
再次重新编译

make u-boot

在这里插入图片描述
编译成功,默认的 u-boot.imx 支持 128MB 内存的 imx6ull
在这里插入图片描述

三、问题 3 及解决方法

1、问题 3 描述

在 linux 源码目录下使用 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 对 linux 内核进行裁剪时报错 fatal error: curses.h: 没有那个文件或目录

[imx6ull-sbc]:~/workspace/6ull/imx6ull-sbc/src/imx6ull-linux-4.1.15> make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfigHOSTCC  scripts/kconfig/mconf.o
<command-line>: fatal error: curses.h: 没有那个文件或目录
compilation terminated.
make[1]: *** [scripts/Makefile.host:108:scripts/kconfig/mconf.o] 错误 1
make: *** [Makefile:541:menuconfig] 错误 

遇到的错误提示 fatal error: curses.h: 没有那个文件或目录 表明您在尝试编译 Linux 内核配置界面时,系统找不到 curses.h 头文件。这个头文件通常属于 ncurses 库,它用于提供文本用户界面。

2、问题 3 解决方法

要解决这个问题,需要安装 ncurses 开发库,它包括必需的头文件和库文件。

sudo apt update
sudo apt install libncurses5-dev
sudo apt install libncurses-dev

再次在 linux 源码目录下使用 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
在这里插入图片描述
可以看到无报错且可以正常打开界面

四、问题 4 及解决方法

1、问题 4 描述

编译 linux 内核时报如下错误:

/bin/sh: 1: lzop: not found
make[3]: *** [arch/arm/boot/compressed/Makefile:180:arch/arm/boot/compressed/piggy.lzo] 错误 1
make[2]: *** [arch/arm/boot/Makefile:52:arch/arm/boot/compressed/vmlinux] 错误 2
make[1]: *** [arch/arm/Makefile:316:zImage] 错误 2
make[1]: 离开目录“/home/gnep/workspace/6ull/imx6ull-sbc/src/imx6ull-linux-4.1.15”
make: *** [Makefile:22:linux] 错误 2

这个错误信息表明您在编译过程中遇到了因为找不到 lzop 压缩工具而导致的失败。lzop 是一种使用 LZO 压缩算法的压缩工具,它常用于 Linux 内核的压缩过程。

2、问题 4 解决方法

安装 lzop

sudo apt install lzop

再次编译 linux

make linux

在这里插入图片描述
可以找到编译产物设备树文件和 zImage 文件
在这里插入图片描述


我的qq:2442391036,欢迎交流!


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

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

相关文章

linux远程访问及控制

一、SSH远程管理 1.SSH的简介 SSH远程管理是一种通过 SSH 协议安全地管理远程计算机的方法。允许管理员通过加密的连接从本地计算机或其他远程位置连接到远程计算机&#xff0c;并执行管理任务、配置设置、故障排除等操作。 远程链接的两种方法&#xff1a;SSH 、Telnet S…

Hadoop学习-MapReducer

MapReducer 目录 MapReducer 1.Hadoop是干嘛的 2.maven 3.MapReducer 1&#xff09;分析数据 写sql 2&#xff09;写程序 a.mapper程序 b.洗牌 分组排序 c.reducer程序 d.Test类 1.Hadoop是干嘛的 1&#xff09;分布式存储 HDFS 2&#xff09;处理大规模数据 Map…

Jammy@Jetson Orin Nano - Tensorflow GPU版本安装

JammyJetson Orin Nano - Tensorflow GPU版本安装 1. 源由2. 问题3. 分析3.1 当前版本Tensorflow 2.16.13.2 GPU版本二进制安装3.3 GPU版本源代码安装3.3.1 问题1 ERROR: no such target //tensorflow/tools/pip_package:wheel3.3.2 问题2 fatal error: cstddef file not found…

《21天学通C++》(第十一章)多态

为什么需要多态&#xff1f; 为了最大限度地减少代码&#xff0c;提高可读性 1.虚函数 虚函数是C中的一种特殊成员函数&#xff0c;它允许在派生类&#xff08;也称为子类&#xff09;中重写&#xff08;覆盖&#xff09;基类的实现&#xff0c;使用virtual进行声明 在C中&am…

vue+element-ui实现横向长箭头,横向线上下可自定义文字(使用after伪元素实现箭头)

项目场景&#xff1a; 需要实现一个长箭头&#xff0c;横向线上下可自定义文字 代码描述 <div><span class"data-model">{{ //上方文字}}</span><el-divider class"q"> </el-divider>//分隔线<span class"data-mod…

贝叶斯统计实战:Python引领的现代数据分析之旅

贝叶斯统计这个名字取自长老会牧师兼业余数学家托马斯贝叶斯(Thomas Bayes&#xff0c;1702—1761)&#xff0c;他最先推导出了贝叶斯定理&#xff0c;该定理于其逝世后的1763年发表。但真正开发贝叶斯方法的第一人是Pierre-Simon Laplace(1749—1827)&#xff0c;因此将其称为…

智慧农业设备——虫情监测系统

随着科技的不断进步和农业生产的日益现代化&#xff0c;智慧农业成为了新时代农业发展的重要方向。其中&#xff0c;虫情监测系统作为智慧农业的重要组成部分&#xff0c;正逐渐受到广大农户和农业专家的关注。 虫情监测系统是一种基于现代传感技术、图像识别技术和大数据分析技…

【Kafka】Kafka与flume整合(四)

Kafka和Flume整合 Kafka与flume整合流程 Kafka整合flume流程图 flume主要是做日志数据(离线或实时)地采集。 图-1 数据处理 图-1显示的是flume采集完毕数据之后&#xff0c;进行的离线处理和实时处理两条业务线&#xff0c;现在再来学习flume和kafka的整合处理。 配置flume…

【C++算法竞赛 · 图论】树

目录 前言 树 树的定义 树的相关概念 树的遍历 1 先序遍历 2 中序遍历 3 后序遍历 前言 前两篇文章&#xff08;【C算法竞赛 图论】图论基础、【C算法竞赛 图论】图的存储&#xff09;中&#xff0c;介绍了图的相关概念与存储&#xff0c;还不了解的可以去补补课。 …

【ETAS CP AUTOSAR工具链】RTE层基本概念与开发流程

本篇文章续接上篇文章【ETAS CP AUTOSAR工具链】基本概念与开发流程&#xff0c;继续按上篇文章描述的ETAS CP工具链进行开发的基本框架&#xff0c;讲述了“RTE集成与配置”这部分的基本概念与开发流程。 RTE&#xff08;Runtime Environment&#xff09;处于应用层与基础软件…

标贝语音识别技术在金融领域中的应用实例

随着语音识别技术与文本挖掘、自然语言处理等技术的不断融合&#xff0c;智能语音交互技术在金融领域中爆发了出巨大的应用潜力。标贝科技根据自身与金融领域合作的经验为大家梳理出以下几点智能语音识别技术在金融领域中的应用实例。 一、智能柜台服务 语音识别的主要功能就…

微PE制作系统重装以及w11详细安装教程windows11安装pe系统制作

1.在电脑上插入一个U盘&#xff08;U盘的内存不小于8G&#xff09;&#xff0c;鼠标右击插入的【U盘】选择【格式化】。 2.文件系统选择【NTFS】&#xff0c;点击【开始】。 3.点击【确定】。 4.格式化完成&#xff0c;点击【确定】。 5.鼠标右击【PE工具箱V2.3】压缩包选…

unity项目《样板间展示》开发:菜单界面

unity项目《样板间展示》开发&#xff1a;菜单界面 前言UI菜单创建逻辑实现结语 前言 这是这个项目demo教程的最后一节&#xff0c;这节是菜单界面部分的创建 UI菜单创建 创建一个新的场景&#xff0c;在Scene文件中右键选择Create->Scene&#xff0c;创建新的场景 在场景…

【深耕 Python】Data Science with Python 数据科学(16)Scikit-learn机器学习(一)

写在前面 关于数据科学环境的建立&#xff0c;可以参考我的博客&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;1&#xff09;环境搭建 往期数据科学博文&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;2&#xf…

unity3d使用3D WebView播放网页中的视频

Unity2021.3.35f1&#xff0c;硬件ESP32-Cam&#xff0c;3D WebView插件 1.新建工程&#xff0c;导入3D WebView for Winfows和3D WebView for Android 2.打开场景Assets\Vuplex\WebView\Demos\Scenes\2_CanvasWebViewDemo 3.修改Canvas的Render Mode为Screen Space-Camera&am…

【C++】学习笔记——string_1

文章目录 四、模板初阶2. 类模板 五、STL简介1. 什么是STL2. STL的六大组件3. 如何学习STL 六、string类1. string类对象的容量操作 未完待续 四、模板初阶 2. 类模板 函数模板就是&#xff1a;模板 函数&#xff1b;类模板就是&#xff1a;模板 类。和函数模板用法基本相同…

Rust HashMap

一、HashMap是什么&#xff0c;怎么用 1、HashMap是什么 HashMap 也是 Rust 标准库中提供的集合类型&#xff0c;但是又与动态数组不同&#xff0c;HashMap 中存储的是一一映射的 KV 键值对&#xff0c;并提供了平均时间复杂度为 O(1) 的查询方法。 2、HashMap怎么用 &…

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

Objective-C大爆炸:从零到单例模式

oc学习笔记&#xff08;一&#xff09; 文章目录 oc学习笔记&#xff08;一&#xff09;oc与c语言的区别#import的用法foundation框架NSLog函数NSString类型符号的作用oc中的数据类型 类与对象概念&#xff1a; 创建第一个类类的定义类的实现类加载对象的产生和使用 self语法id…

最新springboot家乡特色推荐系统

采用技术 最新springboot家乡特色推荐系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能 系统首页 用户注册 文章分享 个人中心 管理员模…