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

从0开始学linux韦东山教程第三章问题小结(2)

  本人从0开始学习linux,使用的是韦东山的教程,在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。
摘要关键词:PC远程访问ubuntu配置,ubuntu配置uboot环境,串口控制开发板

本文详细介绍以下问题,如果你遇到了以下问题,看看我的方案能否解决。

1.在建立服务器远程访问部分不一致
2.安装韦东山的Source insight4.0后没有激活
3.在ubuntu中更改代码,而不是win中
4.实验测试什么是gcc编译文件?
5.无法下载BSP怎么解决
6.为什么不配置永久交叉编译工具链?
7.串口连接开发板输出细节

1.在建立服务器远程访问部分,使用以下命令时出现和视频不一致的结果

sudo apt-get update

在这里插入图片描述
本人的Ubuntu出现视频中以及文档中没有写到的错误如图所示,但是实验发现
在这里插入图片描述
我的服务器远程访问是可以正常访问的,所以以上错误是不影响的。

在这里插入图片描述
2.安装韦东山的Source insight4.0后也发现,没有激活,只好再去找了一个激活的链接,此处借鉴了大佬激活的文章,激活请参考以下:
https://blog.csdn.net/chase2025/article/details/146326629?fromshare=blogdetail&sharetype=blogdetail&sharerId=146326629&sharerefer=PC&sharesource=weixin_52531699&sharefrom=from_link
通过网盘分享的文件:Source Insight 4
链接: https://pan.baidu.com/s/1NY3hNLb3phMe6BhHwwH92w?pwd=t9z4 提取码: t9z4

在这里插入图片描述
按照他的教程后可以直接打开。

3.敲代码过程中一不注意就将头文件写错了,正好借此机会,我想测试在ubuntu中更改会不会有反应,理论上你是通过MobaXterm去远程访问打开你的ubuntu的,所以传输的东西都会传输到Ubuntu本质上改的还是Ubuntu里面的hello文件。

在这里插入图片描述
所以我就试了试在home里面将helllo.c的错误改正了。

在这里插入图片描述
编译过后没有问题,正常输出如图所示。输出hello,world!
在这里插入图片描述
4.在学习过程中,我就在思考什么是gcc编译文件?为什么linux中得要先编译 gcc -o hello hello.c
然后才能输出./hello,执行文件。是因为需要编译产生执行文件吗?

  Linux中需要先编译 hello.c 文件,生成可执行文件(比如 ./hello),是因为C语言是一种编译型语言,而不是解释型语言。

C源代码:你编写的 hello.c 是一种源代码,计算机无法直接理解这种代码。
编译过程:编译器(比如 gcc)将 hello.c 代码转换成机器语言(即计算机能够理解的二进制代码)。这一步是必需的,因为计算机只能直接运行二进制执行文件。
可执行文件:通过编译,生成一个可执行的文件(例如 ./hello)。这个文件包含了所有计算机理解并能执行的指令。
gcc 的作用:当你运行 gcc -o hello hello.c 命令时,gcc 会将 hello.c 编译为一个可执行文件 hello,它包含了机器能够执行的代码。
-o hello 是指定编译后生成的文件名,可以通过这个选项将默认的文件名(通常是 a.out)改为你想要的名字。
为什么需要编译:编译型语言(如C语言)与解释型语言(如Python、JavaScript)不同。解释型语言的代码可以直接由解释器执行,而编译型语言需要先将源代码转换为机器代码。
可执行文件:通过编译,C代码被转化为二进制机器代码,这个二进制文件(如 ./hello)可以直接运行,而不需要再次编译。

当你没有使用gcc -o hello hello.c命令行时。如下面两张图所示,home里面是没有hello文件的。
在这里插入图片描述
命令行也找不着hello文件。
在这里插入图片描述
当我执行gcc -o hello hello.c命令行后,如图所示。
在这里插入图片描述
  如下图所示,home目录地址下会出现一个home文件,本人尝试打开了它发现此文件格式无法打开。
在这里插入图片描述
5.无法下载BSP怎么解决

在这里插入图片描述
  想必很多人也遇到了这个问题,无法下载BSP,如图所示,执行以上命令行的时候出现以下错误。
在这里插入图片描述
  出现以上问题的原因可能是两个,第一关你的ubuntu没有安装git,第二个就是你是学生你连接的是校园网,校园网经常出现以上问题,git网络超时访问。
首先排除git安装问题。使用以下命令行检查git是否安装。

git --version

在这里插入图片描述
当你重新执行以上命令行时,你也许会出现以下错误repo is not empty
在这里插入图片描述
删除现有的 repo 目录:
使用 rm -rf 命令删除现有的目录及其内容:

rm -rf repo

重新克隆仓库:
删除目录后,您可以再次运行 git clone 命令:

git clone https://e.coding.net/codebug8/repo.git

在这里插入图片描述
然后输入以上命令,你就能正常出现以下提示了,填写y
在这里插入图片描述
再然后执行../repo/repo sync -j4
在这里插入图片描述
安装成功,切记不要用校园网。
输入ls命令查看安装内容,和视频讲解的内容一致安装成功。
在这里插入图片描述
  弹幕里面和手册里面都在强调要压缩Linux-4.9.88,但是视频里面没有这部(后续视频才介绍),所以我以防万一,还是将Linux-4.9.88文件压缩了,别搞错了文件地址。在100ask_imx6ull-sdk中。

cd 100ask_imx6ull-sdk
tar cjf Linux-4.9.88.tar.bz2 Linux-4.9.88

6.为什么不配置永久交叉编译工具链?
本人配置的是临时生效的交叉编译工具链
在这里插入图片描述
也就是输入以上命令行,同样能达到视频中的效果,效果如下图所示。
在这里插入图片描述
linux板子的EMMC 启动、SD 卡启动、 USB 烧写三种驱动方式有啥不一样的地方

1.eMMC 启动

eMMC(embedded MultiMediaCard)是嵌入式多媒体卡,通常用于嵌入式系统中作为存储介质。eMMC 是一种内置存储器,它类似于闪存,且具有较快的读写速度。
启动过程:系统会直接从 eMMC 存储器中加载引导程序(Bootloader)和操作系统(如 Linux)。eMMC 存储器通常会预先烧录好系统镜像,包括引导程序、内核和根文件系统。
优势:eMMC 通常较为稳定,读写速度较快,适合用于生产设备的启动。它不需要外部设备(如 SD 卡或 USB),减少了硬件依赖。
缺点:eMMC 作为内置存储,无法像 SD 卡或 USB 设备那样方便地交换或更换系统。

2.SD 卡 启动

SD 卡(Secure Digital Card)是一种常见的外部存储设备,广泛应用于各种电子设备(如相机、手机等)中。
启动过程:与 eMMC 启动类似,系统从 SD 卡中的引导分区加载引导程序和操作系统。启动时,设备会首先查找 SD 卡,加载内核和根文件系统。
优势:SD 卡可以方便地进行更换或重新烧写,适用于开发和测试阶段,尤其是需要频繁更换系统镜像时。
缺点:SD 卡的速度通常较 eMMC 稍慢,且在一些嵌入式设备中,可能由于电源问题或读写次数限制,导致其稳定性相对较差。

3.USB 烧写

USB 烧写是一种将系统镜像通过 USB 设备(如 USB 闪存盘或 U 盘)烧录到目标设备(如开发板)的方式。
烧写过程:USB 烧写是通过将设备连接到 PC 或其他系统中,通过 USB 端口来下载和烧写操作系统的镜像文件。与前两种方式不同,USB 烧写更多是一次性操作,用于将系统镜像从 PC 或开发机传输到目标板子。
启动过程:在启动时,设备会检查 USB 设备是否存在有效的引导镜像。如果存在,它会从 USB 设备启动。
优势:USB 烧写方式在开发过程中非常有用,尤其是在操作系统安装、调试和更新时。通过 USB 烧写,可以轻松地更新或重新烧写系统镜像。
缺点:USB 启动通常速度较慢,且需要每次手动连接 USB 设备。在实际使用中,设备需要具备 USB 启动功能,不同的硬件平台支持的情况可能不同
在这里插入图片描述
7.串口连接输出的细节cd/和cd~
在这里插入图片描述
  你会发现同样是cd但是效果不同,cd ~ 和 cd / 都是用于改变当前工作目录的命令,但它们的行为不同cd ~:这个命令会将你带到当前用户的主目录。波浪号 (~) 是一个快捷方式,表示用户的家目录,比如 /home/username(Linux 或 macOS)或者 C:\Users\username(Windows)。无论你当前在哪个目录,cd ~ 都会将你带回到主目录。
cd /:这个命令会将你带到文件系统的根目录。在 Linux 和 macOS 中,根目录是整个文件系统的最上层,通常是 /。执行 cd / 后,你会进入根目录。

cd ~ 进入的是当前用户的家目录。
cd / 进入的是文件系统的根目录。
http://www.xdnf.cn/news/5252.html

相关文章:

  • 长短期记忆网络(LSTM)深度解析:理论、技术与应用全景
  • 每日算法刷题Day2 5.10:leetcode数组1道题3种解法,用时40min
  • MySQL索引详解(上)(结构/分类/语法篇)
  • Excel里面怎样批量去掉字串包含的标点符号
  • Qt解决自定义窗口样式不生效问题
  • 基于ssm+mysql的快递管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • Linux 离线安装 Docker 和 Docker Compose 最新版 的完整指南
  • 【Linux基础】程序和软件安装管理命令
  • Python爬虫学习路径与实战指南 06
  • Java基础 集合框架 Collection接口和抽象类AbstractCollection
  • Java Spring 常用注解详解
  • 算法-贪婪算法
  • en33网络配置文件未托管
  • 【MyBatis-7】深入理解MyBatis二级缓存:提升应用性能的利器
  • Python核心编程深度解析:作用域、递归与匿名函数的工程实践
  • 17.Excel:实用的 VBA 自动化程序
  • # YOLOv3:深度学习中的目标检测利器
  • linux-----------Ext系列⽂件系统(上)
  • # Java List完全指南:从入门到高阶应用
  • 栈应用:辅助站(c++)
  • C#异步Task,await,async和Unity同步协程
  • 玩转Docker | 使用Docker部署Note Mark笔记应用程序
  • [架构之美]Spring Boot集成MyBatis-Plus高效开发(十七)
  • 求两个正整数的最大公约数和最小公倍数:方法1:辗转相除法
  • 01 | 大模型微调 | 从0学习到实战微调 | AI发展与模型技术介绍
  • STM32实现九轴IMU的卡尔曼滤波
  • 如何在postman使用时间戳
  • Windows下的临界写法
  • 回文数(9)
  • 气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解