【Linux】learning notes(2)

在这里插入图片描述

文章目录

  • 1、快捷键
  • 2、专业名词
    • 2.1、驱动
    • 2.2、内核
    • 2.3、U-Boot
    • 2.4、Dynamic Library and Static Library
    • 2.5、SDK / NDK / UDK
  • 3、BUG


前文链接: 【Linux】learning notes


1、快捷键

在文件夹里,ctrl+l,选定文件夹路径

Linux下的ctrl常用组合键

在linux的命令模式下使用ctrl组合键能让操作更便捷。ctrl + k -- 剪切光标及其后边的内容;ctrl + u -- 剪切光标之前的内容;ctrl + y -- 在光标处粘贴上两个命令,粘贴方式和被剪切方式相同;ctrl + c -- 结束正在运行的程序或命令;ctrl + d -- 结束当前命令窗口;ctrl + r -- 输入关键字可弹出曾经用过的指令, 可以输入进行模糊搜索;ctrl + l -- 清屏;(和clear效果相同)ctrl + a -- 光标切换到行开头;ctrl + e -- 光标切换到行尾。

2、专业名词

2.1、驱动

驱动:驱动本质上是软件代码,其主要作用是计算机系统与硬件设备之间完成数据传送的功能,只有借助驱动程序,两者才能通信并完成特定的功能。如果一个硬件设备没有驱动程序,只有操作系统是不能发挥特有功效的,也就是说驱动程序是介于操作系统与硬件之间的媒介,实现双向的传达,即将硬件设备本身具有的功能传达给操作系统,同时也将操作系统的标准指令传达给硬件设备,从而实现两者的无缝连接

2.2、内核

linux 内核:操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等

2.3、U-Boot

U-Boot,全称 Universal Boot Loader,是一个主要用于嵌入式系统的引导加载程序

一、概述

U-Boot是一个开放源码项目,遵循 GNU 通用公共许可证(GPL)条款。它支持多种不同的计算机系统结构,包括 PPC、ARM、AVR32、MIPS、x86、68k、Nios 与 MicroBlaze 等。此外,U-Boot 还支持多种嵌入式操作系统,如 Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS 以及 Android 等。

二、特点

  • 开放源码:U-Boot 遵循 GPL 条款,源代码公开,可以自由获取和修改。
  • 多系统支持:支持多种嵌入式操作系统内核和处理器系列。
  • 高可靠性和稳定性:经过长期的发展和完善,U-Boot 具有较高的可靠性和稳定性。
  • 灵活的功能设置:适合 U-Boot 调试、操作系统不同引导要求、产品发布等。
  • 丰富的设备驱动:提供串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等设备的驱动支持。
  • 丰富的开发调试文档与技术支持:为开发者提供了丰富的文档和强大的技术支持。

三、主要功能

  • 系统引导:支持 NFS 挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持从 FLASH 中引导压缩或非压缩系统内核。
  • 基本辅助功能:提供强大的操作系统接口功能,可灵活设置、传递多个关键参数给操作系统。
  • CRC32校验:用于校验 FLASH 中内核、RAMDISK 镜像文件是否完好。
  • 设备驱动支持:提供多种外设的驱动支持,方便进行外设功能测试。
  • 上电自检:支持 SDRAM、FLASH 大小自动检测以及 SDRAM 故障检测等功能。

四、工作模式

U-Boot 的工作模式主要包括启动加载模式和下载模式。

  • 启动加载模式:这是 Bootloader 的正常工作模式。在嵌入式产品发布时,Bootloader 必须工作在这种模式下。它会自动将嵌入式操作系统从 FLASH 中加载到 SDRAM 中运行。
  • 下载模式:在这种模式下,Bootloader 可以通过某些通信手段将内核映像或根文件系统映像等从 PC 机中下载到目标板的 FLASH 中。用户可以利用 Bootloader 提供的一些命令接口来完成自己想要的操作。

五、源码结构与编译

U-Boot 的源码结构通常包括多个子目录,如 api、arch、board、boot、cmd、common、configs、disk、doc、drivers 等。每个子目录都包含与特定功能相关的代码和文件。

编译 U-Boot 通常需要进入根目录,使目标板的默认配置生效,然后执行 make 命令来启动编译过程。编译完成后,会在根目录下生成 u-boot.bin 可执行二进制文件。

六、应用场景

U-Boot 广泛应用于各种嵌入式系统中,特别是那些需要高度可靠性和稳定性的场景。例如,在智能家居、工业自动化、医疗设备等领域中,U-Boot 都发挥着重要的作用。

综上所述,U-Boot 作为一个功能强大且灵活的引导加载程序,在嵌入式系统领域具有广泛的应用前景。

linux系统移植为什么一定要用uboot引导内核?
在这里插入图片描述

【长文】说说UBOOT开发的几个核心问题
在这里插入图片描述

uboot 经过多年发展,已经成为事实上的业内 bootloader 标准。现在大部分的嵌入式设备都会默认使用 uboot 来做为 bootloader。

在这里插入图片描述
在这里插入图片描述

总结uboot的重要概念,不知道的看过来
在这里插入图片描述

Linux系统Uboot的移植
在这里插入图片描述

嵌入式Linux移植和Uboot(一):Bootloader介绍,U-boot介绍(特点,目录结构)

在这里插入图片描述

嵌入式开发岗招聘老是在说的精通uboot和内核裁剪,到底是裁剪了什么?
在这里插入图片描述

2.4、Dynamic Library and Static Library

动态库(Dynamic Library)和静态库(Static Library)是软件开发中常用的两种库类型,它们在多个方面存在显著差异。

一、定义与用途

  • 静态库:

    • 静态库是软件开发中常用的一种库文件形式,它包含了一组预编译的目标文件(.o文件或.obj文件),这些目标文件中包含了函数和数据,可以被程序调用和使用。
    • 静态库的主要用途是共享代码,即将一些公共代码编译为库文件,在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中
  • 动态库:

    • 动态库也被称为共享库(Shared Library),在程序运行时才被加载到内存中,它包含了函数和数据,可以被多个程序共享。
    • 动态库的主要目的是节省资源,因为多个程序可以共享同一个动态库,从而显著节省内存和磁盘空间。

二、编译与链接方式

  • 静态库:

    • 在编译过程中,静态库中的代码会被完整地复制到目标程序中。
    • 因此,生成的可执行文件通常会比使用动态库时更大,因为它包含了库的所有代码。
  • 动态库:

    • 在编译时,动态库不会被链接到目标程序中,而是在程序运行时由操作系统动态加载到内存中。
    • 因此,生成的可执行文件通常比使用静态库时小很多,因为它只包含对动态库中函数的引用。

三、内存占用与资源共享

  • 静态库:

    • 静态库在程序运行时会被完整地加载到内存中。
    • 如果多个程序都使用同一个静态库,那么每个程序都会有一份库代码的拷贝,这会导致内存和磁盘空间的浪费。
  • 动态库:

    • 动态库允许库的代码在内存中共享。
    • 所有使用同一动态库的程序都共享同一份代码,从而节省了内存和磁盘空间。

四、可维护性与更新

  • 静态库:

    • 如果静态库中的代码需要更新,所有使用该库的可执行文件都需要重新编译。
    • 这增加了维护的复杂性。
  • 动态库:

    • 如果动态库中的代码需要更新,只需要替换相应的动态库文件即可。
    • 这无需重新编译所有使用该库的可执行文件,从而简化了升级过程。

五、适用场景

  • 静态库:
    • 适用于对执行文件大小没有严格限制、需要在没有库文件的机器上运行或需要避免动态链接带来的依赖性的场景。
  • 动态库:
    • 适用于需要多个程序共享库代码、希望节省内存和磁盘空间或需要方便地进行库代码升级和维护的场景。

2.5、SDK / NDK / UDK

SDK、NDK、UDK都是软件开发中的工具或工具包,它们在软件开发过程中扮演着不同的角色。以下是关于这三者的详细介绍:

一、SDK(Software Development Kit)

SDK,即软件开发工具包,是软件开发人员为特定的软件包、应用程序、硬件平台、操作系统等建立应用软件时的开发工具集合。它通常包括一系列用于开发、测试、调试和部署应用程序的工具和库。

核心组件:SDK 的核心组件可能包括编译器、调试器、模拟器、虚拟设备管理器等,以及一系列API和库,如 Android SDK 中的 Android Debug Bridge(ADB)、Android Studio、Android Emulator等。

用途:SDK 使开发人员能够更高效地创建和测试应用程序,而无需从头开始编写所有代码。例如,Android SDK 允许开发人员使用 Java 或 Kotlin 等语言编写 Android 应用程序,并提供丰富的API 和工具来简化开发过程。

SDK使开发人员可以更轻松地使用底层技术来创建应用程序,而无需深入了解底层技术的细节。开发人员可以使用SDK提供的API和库来访问平台特定的功能和服务,从而更快地构建高质量的应用程序。同时,SDK还可以提供开发文档和示例代码,使开发人员能够更容易地理解和使用SDK。
作者:老黄谈支付
链接:https://www.zhihu.com/question/588406707/answer/2938683658
来源:知乎

在这里插入图片描述

一文讲透SDK和API的区别是什么?

在这里插入图片描述

二、NDK(Native Development Kit)

NDK,即本地开发工具包,允许开发人员使用 C/C++ 等原生代码编写 Android 应用程序的部分或全部代码。

核心组件:NDK的核心组件包括一系列C/C++库、交叉编译器、库生成器等,以及用于与Java代码进行交互的JNI(Java Native Interface)。

用途:使用NDK,开发人员可以编写高性能、低延迟的应用程序,如游戏引擎、音频处理器、图形渲染器等。此外,NDK还允许开发人员访问底层系统资源,如内存、文件系统等。

注意事项:虽然NDK可以为应用程序带来更好的性能和更高的灵活性,但同时也增加了应用程序的开发和维护成本。因此,在使用NDK之前,开发人员应该仔细评估是否真正需要使用原生代码。

在这里插入图片描述

为什么说使用 NDK 开发 Android 应用几乎对性能没有帮助?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

android 小白不敢触及 NDK?

在这里插入图片描述

Android ndk学习必要性?学习方法? - hanpfei的回答 - 知乎
https://www.zhihu.com/question/36180948/answer/68799984

在这里插入图片描述

Android开发中的NDK到底是什么?(详细解析+案例)
在这里插入图片描述

在这里插入图片描述

三、UDK(Unreal Development Kit)

UDK,即虚幻开发套件,是由 Epic Games 开发的一款强大的游戏开发工具。

核心组件:UDK提供了丰富的工具和功能,如3D渲染、物理模拟、人工智能、动画系统等,以及一个强大的关卡编辑器和资源管理器。此外,它还支持使用UnrealScript(一种基于类的脚本语言)来编写游戏逻辑和交互。

用途:UDK允许开发人员创建高品质的游戏,并提供高度的自定义性和创造力。开发人员可以使用UDK的工具和功能来创建游戏世界、角色、物体等,并通过脚本编程和蓝图系统来实现各种想象力的设计和创意。

社区支持:UDK有一个庞大的开发者社区,开发者可以在社区中获取支持、分享经验和资源,这极大地方便了UDK编程的学习和开发。

3、BUG

解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22‘ not found

libstdc++.so.6.0.22 下载

解决libstdc++.so.6: version `GLIBCXX_3.4.22’ not found


更多关于 python 的文章可以参考 【Python】

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

商业银行核心系统单元化改造的研究与思考

随着金融科技的快速发展,银行核心系统面临着更高的处理能力、扩展能力及业务连续性的要求与挑战。为应对这些挑战,许多银行开始考虑对其核心系统进行单元化改造。本文首先分析了传统银行核心系统存在的问题以及单元化改造的必要性,然后详细阐…

指针

内存和地址 内存 我们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们电脑上的哪些内存空间如何高效的管理呢? 其实也是把内存划分为一个个的…

强大的正则表达式——Medium

由上一篇文章《Easy》中提到过的: 还是直接让AI写个python脚本生成难度2的正则表达式,但是生成的正则表达式无法成功获取到flag: 这里了解了一下相关知识,字符串形式的整数对常数求模是可以用有限状态机来实现的。对于二进制数字来…

科技改变工作方式:群晖NAS安装内网穿透实现个性化办公office文档分享(1)

文章目录 前言1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 前言 本文将详细介绍如何在群晖NAS上安装Synology Office和Synology Drive Server,并利用Cpolar内网穿透工具为本地文档配置固定的公网…

android:taskAffinity 对Activity退出时跳转的影响

android:taskAffinity 对Activity跳转的影响 概述taskAffinity 的工作机制taskAffinity对 Activity 跳转的影响一个实际的开发问题总结参考 概述 在 Android 开发中,任务栈(Task)是一个核心概念。它决定了应用程序的 Activity 如何相互交互以…

运算放大器的学习(三)增益带宽积

我们接着了解运放的相关指标参数,下面我们看下增益带宽积与压摆率. 增益带宽积:即电压增益(Gain)和带宽(Bandwidth)的乘积是一个常数,称为增益带宽积(Gain Bandwidth Product). 增益…

ThinkPHP6门面(Facade)

门面 门面(Facade) 门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。 系统已经为大部分…

【概率论】概率密度到底是什么

1. 书本上的定义: 如果对于随机变量X的分布函数F(X),存在一个非负可积函数f(x),使得任意实数x,都有: 称X为连续型随机变量,函数f(x)称为X的概率密度 所谓的概率密度,就是 概率/区间长度 &#…

线代笔记期末复习

第一讲行列式的计算 基础定义和规则 ps: 交换时不止行可以交换,列方便时也可以 我的第一作法:是把行相加,然后后续无差别 范德蒙行列式的计算: 要求第一行/列全为1 每个公比元素作差再相乘 爪型 步骤:…

javaweb快速入门 - 01

1.基本概念 web开发: web,网页的意思 , www.baidu.com静态web html,css提供给所有人看的数据始终不会发生变化! 动态web 淘宝,几乎是所有的网站;提供给所有人看的数据始终会发生变化&#xf…

计算机网络学习笔记-6.应用层

文章目录 客户端-服务器模型(C/S)对等网络模型(P2P)DNS(域名系统)文件传输协议(FTP)FTP的基本功能:FTP的工作原理: 万维网(WWW)URL万维…

使用IDE实现java端远程调试功能

使用IDE实现java端远程调试功能 1. 整体描述2. 前期准备3. 具体操作3.1 修改启动命令3.2 IDE配置3.3 打断点3.4 运行Debug 4. 总结 1. 整体描述 在做项目时,有些时候,需要和第三方进行调式,但是第三方不在一起,需要进行远程调试&…

241118学习日志——[CSDIY] [InternStudio] 大模型训练营 [07]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…

简单爬虫的实现

以下是一个简单爬虫代码的实现: import requests from bs4 import BeautifulSoup# 生成一个包含多个网页 URL 的列表 # 这里我们构造了 50 个页面的 URL,假设网站有多页内容,页数从 1 到 50 urls [f"https://www.cnblogs.com/#p{i}&qu…

RNN简单理解;为什么出现Transformer:传统RNN的问题;Attention(注意力机制)和Self-Attention(自注意力机制)区别;

目录 RNN简单理解 RNN n to n Transformer N to M LSTM 为什么出现Transformer:传统RNN的问题 信息丢失的后果 Rnn是顺序执行的效率不高:顺序执行 Attention(注意力机制)和Self-Attention(自注意力机制)区别 一、计算对象不同 二、应用场景不同 三、功能差异…

小熊派Nano|HarmonyOS初体验-LiteOS内核

在这个万物互联的时代,操作系统作为连接硬件与应用的桥梁,其重要性不言而喻。华为推出的HarmonyOS(鸿蒙操作系统),自诞生以来便备受瞩目,它不仅承载着华为对未来智能生态的愿景,更以其独特的分布…

Linux基础(二十一)——认识系统服务(daemons)

认识系统服务 ( daemons) 1.daemon 与服务 ( service)2. systemd3. systemctl4. systemctl 配置文件 1.daemon 与服务 ( service) 在 Linux 和类 Unix 系统中,daemon(守护进程&…

QT QChart+Eigen库绘制线性回归散点图

QChart+Eigen库绘制线性回归散点图 老套路,一图胜千言 项目结构 代码 mainwindow.h #ifndef MAINWINDOW_H #

uniapp开发微信小程序笔记4-自定义组件

前言:本文重点记录的是uniapp如何封装一个自定义组件,以swiper组件为例。 一、创建组件目录 官方文档中的easycom组件规范中可以看到这样一句话: 只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组…

(三)反向传播 Backpropagation

文章目录 反向传播Backpropagation(1)Chain Rule(2)Forward pass和Backward pass 反向传播Backpropagation 对于计算Gradient Descent这件事情,我们的neural network是有非常非常多的参数,可能有上百万个参…