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,一经查实,立即删除!

相关文章

手机端如果要想玩脱,就是玩loop refresh to death

如果“Refresh”作为一个手机漏洞的概念被提出&#xff08;实际上&#xff0c;“Refresh”本身通常不是一个特指的手机漏洞&#xff0c;但我们可以假设它是某种与界面刷新或数据更新相关的安全漏洞&#xff09;&#xff0c;那么潜在的攻击者可能会利用这种漏洞来执行各种恶意操…

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…

docker学习笔记1:什么是docker

目录 什么是dockerDocker 的主要组件学习 Docker 的步骤资源和教程什么是docker docker官网:https://www.docker.com Docker 是一个开源的应用容器引擎,它允许开发者打包应用以及应用的运行环境到一个可移植的容器中,然后发布到任何支持 Docker 的平台上运行。这种打包方式…

elementUI之el-select选择器赋值为空后无法选中回显

elementUI之el-select选择器赋值为空后无法选中回显 问题原因&#xff1a; 焦点问题 解决办法&#xff1a; this.$set(this.form, monthlyRent, );

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

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

数据的定义及其分类

1&#xff09;、数据&#xff1a;任何以电子或者其他方式对信息的记录 2&#xff09;、重要数据&#xff1a;特定领域、特定群体、特定区域或者达到一定精度和规模的、一旦被篡改或者泄露、损毁&#xff0c;可能直接危害国家安全、经济运行、社会稳定、公共健康和安全的数据&a…

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

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

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

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

使用pydub库操作与二进制音频数据互转

一、二进制数据转AudioSegment对象 binary_data b... # 二进制音频数据 combined_audio AudioSegment.from_file(io.BytesIO(binary_data)) 二、AudioSegment对象转二进制数据 binary_data b... # 二进制音频数据combined_audio AudioSegment.from_file(io.BytesIO(bin…

深入理解Java消息中间件-云原生和容器化对消息中间件的影响

在经历了从物理服务器到虚拟化技术的演进后&#xff0c;当前IT架构的发展势头正在向云原生和容器化迈进。这一趋势对于整个技术领域&#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…