【从零开始的嵌入式生活】LinuxC语言——软件包管理和shell

请添加图片描述

前言

今天是2021年的第一天,刚好开了新坑,这次不能断更了呀。
今天是新年的第一天,刚好开始进入稍微深入一点的应用讲解,希望大家可以跟随我的脚步一起学习进步!
三连即可提高学习效率0.0

🧑🏻作者简介:一个学嵌入式的年轻人
✨联系方式:2201891280(QQ)
📔源码地址:https://gitee.com/xingleigao/study_qianrushi
全文大约阅读时间: 60min



1.linux简介(作为了解)

Unix的起源

Linux的内核就是Unix

  • 1969年,由KenThompson在AT&T贝尔实验室实现的。使用的是用汇编语言。
  • 1970年,KenThompson和DennisRitchie使用 C语言对整个系统进行了再加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。

请添加图片描述


Linux是什么?

GNU&GPL
GNU = GNU is Not Unix
由Richard Stallman在1984创建
最初的软件:gcc、make、glibc…
GPL = General Public License
Linux是一种操作系统。

  • 1991年,芬兰赫尔辛基大学的学生Linus Torvals为了能在家里的PC机上使用与学校一样的操作系统,开始编写了类UNIX。
  • 1991.8.25,Linus就在comp.os.minix新闻组中首次发布了一个Linux内核的公共版本。

Linus各种怼天怼地。特别有意思0.0


Linux体系结构

Linux操作系统的组件
请添加图片描述


命令终端

前流行的终端窗口有:Xterm、Gnome-terminal、Konsole、Rxvt等
其中ubuntu自带的是Gnome-terminal,我日常使用的是ssh直接远程连接的界面,感兴趣的童鞋可以自己摸索一下。

2.deb软件包管理(apt详细掌握)

两种软件包管理机制

  • Debian Linux首先提出“软件包”的管理机制——Deb软件包
    将应用程序的二进制文件、配置文档、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。
  • Redhat Linux基于这个理念推出了自己的软件包管理机制——Rpm软件包。

随着Linux操作系统规模的不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断。Debian Linux开发出了APT软件包管理器。检查和修复软件包依赖关系,利用Internet网络帮助用户主动获取软件包
APT工具再次促进了Deb软件包更为广泛地使用,成为Debian Linux的一个无法替代的亮点。


软件包的类型

Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)

  1. 二进制软件包(Binary Packages):它包含可执行文件、库文件、配置文件、man/info页面、版权声明和其它文档。
  2. 源码包(Source Packages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。

软件包的命名遵循以下约定:
请添加图片描述


软件包管理工具分类

类别常见工具描述
命令行dpkg-deb、dpkg、apt在命令行模式下完成软件包管理任务。
文本窗口界面dselect、aptitude、tasksel在文本窗口模式中,使用窗口和菜单可以完成软件包管理任务。
图形界面synaptic在X-Window图形桌面环境中运行,具有更好的交互性、可读性、易用性等特点

我们比较常用的还是dpkg和apt方式


dpkg 相关命令

命令介绍
dpkg -i <package>安装一个在本地文件系统上存在的Debian软件包
dpkg -r <package>移除一个已经安装的软件包
dpkg -P <package>移除已安装软件包及配置文件
dpkg -L <package>列出安装的软件包清单
dpkg -s <package>显出软件包的安装状态

APT工作原理

Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。因此,对于用户,这些镜像服务器就是他们的软件源(reposity)。
在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。
软件源配置文件只是告知Ubuntu系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。若是每安装一个软件包,就在服务器上寻找一边,效率是很低的。因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。这就是APT软件包管理器的工作原理。


软件源配置文件

/etc/apt/sources.list。本质就是一个普通的文本文件,可以在超级管理员授权下,使用任何文本编辑器进行编辑。在该文件中,添加的软件源镜像站点称为一个配置项,并遵循以下格式:

DebType  AddressType://Hostaddress/Ubuntu  Distribution  Component1  Component2……

软件源

软件源分类

  • 核心(Main):官方维护的开源软件,是由Ubuntu官方完全支持的软件,包括大多数流行的、稳定的开源软件,是Ubuntu默认安装的基本软件包;
  • 公共(Universe):社区维护的开源软件,是由Ubuntu社区的计算机爱好者维护的软件。这些软件包没有安全升级的保障。用户在使用时,需要考虑这些软件包存在的不稳定性;
  • 受限(Restricted):官方维护的非开源软件,是专供特殊用途,而且没有自由软件版权,不能直接修改软件,但依然被Ubuntu团队支持的软件;
  • 多元化(Multiverse):非Ubuntu官方维护的非开源软件,用户使用这些软件包时,需要特别注意版权问题。

刷新软件源
修改了配置文件——/etc/apt/sources.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,需要将这些资源列个清单,以便本地主机知晓可以申请哪些资源。
使用apt-get update命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。


管理软件包

apt-get  subcommands  [ -d | -f | -m | -q | --purge | --reinstall | - b | - s | - y | - u | - h | -v ]  pkg
子命令描述
update载更新软件包列表信息
upgrade将系统中所有软件包升级到最新的版本
install下载所需软件包并进行安装配置
remove卸载软件包
autoremove将不满足依赖关系的软件包自动卸载
source下载源码包
build-dep为源码包构建所需的编译环境
dist-upgrade发布版升级
dselect-upgrade根据dselect的选择来进行软件包升级
clean删除缓存区中所有已下载的包文件
autoclean删除缓存区中老版本的已下载的包文件
check检查系统中依赖关系的完整性
选项描述
-d仅下载软件包,而不安装或解压
-f复系统中存在的软件包依赖性问题
-m当发现缺少关联软件包时,仍试图继续执行
-q将输出作为日志保留,不获取命令执行进度
–purge与remove子命令一起使用,完全卸载软件包
–reinstall与install子命令一起使用,重新安装软件包
-b在下载完源码包后,编译生成相应的软件包
-s不做实际操作,只是模拟命令执行结果
-y对所有询问都作肯定的回答,apt-get不再进行任何提示
-u获取已升级的软件包列表
-h获取帮助信息
-v获取apt-get版本号

我加粗的为常用的命令,应该着重记忆!!!


修复软件包依赖关系

如果由于故障而中断软件安装过程,可能会造成关联的软件包只有部分安装。之后,用户就会发现该软件既不能重装又不能删除。

作为组合命令,下面前者用于检查软件包依赖关系,后者用于修复依赖关系。
apt-get check——apt-get -f install
在处理依赖关系上,apt-get会自动下载并安装具有依赖关系(depends)的软件包,但不会处理与安装软件包存在推荐(recommends)和建议(suggests)关系的软件包。


安装软件包

在准备好软件源并连通网络后,用户只需告知安装软件的名称,“apt-get install”命令就可以轻松完成整个安装过程,而无须考虑软件包的版本、优先级、依赖关系等。
使用“apt-get install”下载软件包大体分为四步:

  1. 扫描本地存放的软件包更新列表(由apt-get update命令刷新更新列表),找到最>新版本的软件包;
  2. 进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包;
  3. 从软件源所指的镜像站点中,下载相关软件包;
  4. 解压软件包,并自动完成应用程序的安装和配置

查询软件包信息

apt-cache  subcommands  [ -p | -s | - q | - i | - c | -h ]  pkg
子命令描述
showpkg获取二进制软件包的常规描述信息
showsrc获取源码包的详细描述信息
show获取二进制软件包的详细描述信息
stats获取软件源的基本统计信息
search根据正则表达式检索软件包
depends获取该软件包的依赖信息
rdepends获取所有依赖于该软件包的软件包
pkgnames列出所有已安装软件包的名字
policy获取软件包当前的安装状态

3.shell基本命令(简单了解)

shell简介

英文单词shell可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。
可以这样认为,Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互
在这里插入图片描述
shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。
当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行。
用户在命令行提示符下键入命令文本,开始与Shell进行交互
接着,shell将用户的命令或按键转化成内核所能够理解的指令
控制操作系统做出响应,直到控制相关硬件设备
然后,shell将输出结果通过shell提交给用户
请添加图片描述


shell的简单命令

sudo  shutdown  -h  now //关机
sudo  shutdown  -r  now //重启
sudo  reboot   now //重启
sudo  shutdown  -h  +45   “That is all, game over.”//定时关机并打印字符
sudo  shutdown  -r  +60 //定时重启

4.shell中的特殊字符(必须掌握)

shell中的通配符

通配符含义实例
星号(*)匹配任意长度的字符串用file_*.txt,匹配file_wang.txt、file_Lee.txt、file3_Liu.txt
问号(?)匹配一个长度的字符用flie_?.txt,匹配file_1.txt、file1_2.txt、file_3.txt
方括号([…])匹配其中指定的一个字符用file_[otr].txt,匹配file_o.txt、file_r.txt和file_t.txt
方括号([ - ])匹配指定的一个字符范围用file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt
方括号([^…])除了其中指定的字符,均可匹配用file_[^otr].txt,除了file_o.txt、file_r.txt和file_t.txt的其他文件

shell中的管道

管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成了一个管道。
其实这就是两个进程间通信的一种方式。利用管道将第一个程序的输出结果作为第二个命令的输入。
举个例子:

ls  /usr/bin  | wc  –w

上面的命令就可以得到/usr/bin目录下所有的文件个数。


输出重定向

重定向符含义实例
> file将file文件重定向为输出源,新建模式ls /usr > Lsoutput.txt,将ls /usr的执行结果,写到Lsoutput.txt文件中,若有同名文件将被删除
>> file将file文件重定向为输出源,追加模式ls /usr >> Lsoutput.txt,将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后
< file 将file文件重定向为输入源wc < file1,将file1中的内容作为输入传给wc命令
2> 或 &>将由命令产生的错误信息输入到文件中ls noexistingfile.txt 2> err.log,使用ls命令,查看一个不存在的文件时,将系统错误提示保存在err.log文件中

命令置换

ls 'pwd'

上面的命令作用就是显示当前目录下的所有文件,可以认为是pwd会先执行出结果作为ls输入来进行输出。

写在最后

今天主要讲解了linux下编程的基础知识,接下来的几天都会围绕这一主题展开,有兴趣的童鞋可以跟我一起呀。三连即可提高学习效率!!!


另外我在更新的就是算法笔记的一些例题笔记,这个系列是用于提高我的算法能力,如果有兴趣对算法领域感兴趣找不到合适的入门文章也可以追更,如果我更新的太慢了请大家点赞收藏,一键三连才能更有更新的动力呀0.0

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 嵌入式系统设计与应用是指在特定应用领域中,使用嵌入式处理器和相关硬件资源,结合嵌入式操作系统和软件开发工具,设计和开发满足特定需求的嵌入式系统。 ARM Cortex-A8是一款高性能的嵌入式处理器,广泛应用于手机、平板电脑、智能电视等嵌入式设备中。它具有强大的计算能力和低功耗特性,能够提供快速、高效的数据处理和多任务处理能力。 Linux是一种开源的嵌入式操作系统,提供了丰富的软件资源和开发工具,可以满足各种嵌入式应用的需求。在使用ARM Cortex-A8和Linux进行嵌入式系统设计和应用时,可以借助Linux的强大功能和丰富的软件生态系统,快速开发出满足特定需求的嵌入式应用。 设计和开发嵌入式系统时,首先需要选择合适的硬件平台和操作系统。选择ARM Cortex-A8作为处理器可以得到高性能和低功耗的优势,而选择Linux作为操作系统可以借助其丰富的软件资源和开发工具。 然后,根据具体的嵌入式应用需求,对系统进行架构设计和软件模块划分。在嵌入式系统设计中,需要考虑系统的实时性、功耗控制、硬件接口与外设的驱动、应用程序的开发等方面。 在应用开发阶段,可以使用C/C++等编程语言,结合相应的开发工具,编写应用程序和驱动程序。同时,可以借助Linux的丰富资源,如网络协议栈、文件系统、数据库等,快速实现系统的功能。 最后,在系统调试和测试阶段,可以使用调试工具和仿真平台进行系统性能测试和调试,以确保系统的稳定性和可靠性。 综上所述,嵌入式系统设计与应用基于ARM Cortex-A8和Linux可以提供高性能、低功耗和丰富软件资源的优势,能够快速开发出满足特定需求的嵌入式应用。 ### 回答2: 嵌入式系统设计与应用是指将计算机系统嵌入到特定的电子设备中,以完成特定的功能。基于ARM Cortex-A8和Linux嵌入式系统设计与应用是指利用ARM Cortex-A8处理器和Linux操作系统来设计和开发嵌入式系统。 ARM Cortex-A8是一种高性能、低功耗的32位RISC处理器。它采用精简指令集架构,具有较高的运算能力和较低的能耗。Cortex-A8处理器广泛应用于嵌入式领域,可用于智能手机、平板电脑、汽车导航系统等各种嵌入式设备。 Linux是一种开源的操作系统内核,具有广泛的硬件支持和强大的软件生态系统。在嵌入式系统设计中,Linux提供了丰富的功能和驱动支持,能够提供稳定可靠的操作环境。同时,Linux还可以方便地进行定制和扩展,以满足各种应用需求。 在基于ARM Cortex-A8和Linux嵌入式系统设计中,我们可以利用Linux提供的运行时库、工具链以及开发环境来进行系统开发。可以利用C/C++编程语言来进行应用程序的开发,使用Linux提供的设备驱动程序来进行硬件的控制和交互。同时,我们还可以利用Linux的网络支持和文件系统功能来实现网络连接和数据存储。 综上所述,基于ARM Cortex-A8和Linux嵌入式系统设计与应用具有高性能、低功耗、可定制和可扩展等优势,可以适用于各种嵌入式设备的开发和应用。它在智能手机、平板电脑、汽车导航系统等领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XingleiGao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值