第1讲 开发电脑的选择
一、开发电脑要求
1.1、CPU要求
4核8线程,2核编译代码性能?编译大工程的时候很耗费CPU,编译QT大概要很久。
核心越多越好,主频越高越好。
1.2、内存要求
最少16GB,
1.3、硬盘要求
Yocto,1T以上的硬盘,至少300G给Ubuntu。
1.4、其他的要求
对显卡没有任何要求。
二、开发电脑选择
2.1、CPU的选择
性能越强越好?前提是有钱。I7-7700HQ,I7-8700,9700。在预算范围内,CPU性能越强越好。
2.2、内存的选择
16GB内存
2.3、硬盘的选择
1TB,西数,希捷,东芝,日立。
2.4、其他的外设的选择
显卡,只要能点亮屏幕就行。
三、视频录视方式
1、拒绝照读PPT。手把手教学。
2、视频分辨率:1080P。
3、现场敲代码。
4、现场做笔记。
第2讲 VMware软件安装和虚拟机创建
第3讲 Ubuntu操作系统的安装
第4讲 Ubuntu初次体验
第5讲 虚拟机链接USB设备
第6讲 Ubuntu终端操作与shell命令
一、Ubuntu终端操作
打开终端进行命令行操作
二、Shell命令
1、目录信息查看命令ls
ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的
2、目录切换命令cd
3、当前路径显示命令pwd
4、系统信息查看命令uname
5、清理屏幕命令clear
6、显示文件内容命令cat
7、切换用户身份命令sudo
8、文件拷贝命令cp
9、切换用户命令su
10、移动文件命令mv
11、创建文件夹命令mkdir
12、创建文件命令touch
13、删除命令rm
14、目录删除命令rmdir
15、显示网络配置信息命令ifconfig
16、重启命令reboot
17、关机命令poweroff
18、系统帮助命令man
19、数据同步写入磁盘命令sync
20、查找文件命令find
21、查找内容命令grep
22、文件夹大小查看命令du
23、磁盘空间检查命令df
24、使用gedit打开某个文件命令gedit
25、当前的系统进程查看命令ps
26、进程实时运行状态查看命令top
27、文件类型查看命令file
第7讲 Ubuntu软件安装
第8讲 Ubuntu文件系统结构
一、根目录“/”
Linux下“/”就是根目录!所有的目录都是由根目录衍生出来的。
二、Ubuntu文件系统结构
/bin 存放二进制可执行文件,这些命令在单用户模式下也能够使用。可以被root和一般的账号使用。
/boot Ubuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。
/dev 设备驱动文件
/etc 存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址。
/home 系统默认的用户主文件夹,一般创建用户账户的时候,默认的用户主文件夹都会放到此目录下。
/lib 存放库文件
/media 此目录下放置可插拔设备,比如SD卡,或者U盘就是挂载到这个目录中。
/mnt 用户可使用的挂载点,如果要挂载一些额外的设备,那么就可以挂载到此处。
/opt 可选的文件和程序存放目录,给第三方软件放置的目录。
/root root用户目录,也就是系统管理员目录。
/sbin 和/bin类似,也是存放一些二进制可执行文件。sbin下面的一般是系统开机过程中所需要的命令。
/srv 服务相关目录。比如网络服务。
/sys 记录内核信息,虚拟文件系统。
/tmp 临时目录
/var 存放一些变化的文件,比如日志文件
/usr usr不是user的缩写,而是UNIX Software Resource的缩写,存放于系统用户有关的文件,会占用很大的存储空间!
/proc 虚拟文件系统,数据放置到内存中,存放系统运行信息
三、绝对路径和相对路径
绝对路径:从根目录“/”算起的路径。
相对路径:相对于目前路径的文件名写法,比如./home/zzk。不是以“/”开头的就行。
“.”代表当前路径,也可以 用“./”表示
“..”代表上一层目录,也可以用“../”表示
第9讲 Ubuntu下的磁盘管理
一、Ubuntu磁盘文件
/dev/sd*文件,此类文件是磁盘设备文件,并不能直接访问磁盘,必须要将磁盘挂载到某一个目录下才可以访问。
/dev/sdb和/dev/sdb1是U盘的设备文件。
/dev/sdb表示U盘,/dev/sdb1表示U盘的第一个分区。
二、磁盘和目录的容量查询命令
df:列出文件系统的整体磁盘使用量。主要查看个文件系统的使用量,
du:评估文件系统的磁盘使用量,主要查看单个文件的大小。
三、磁盘挂载与卸载,分区和格式化、
1、磁盘的挂载和卸载
mount和umount命令
2、磁盘分区
fdisk命令
3、磁盘格式化
磁盘分区创建好以后就可以格式化磁盘,使用命令mkfs。如:
mkfs -t vfat /dev/sdx
第10讲 Ubuntu下压缩与解压缩
一、Linux下常用的压缩格式
Linux下常用的压缩扩展名有:.tar、.tar.bz2、.tar.gz。
二、Windows下7ZIP软件的安装
因为Linux下很多文件是.bz2,.gz结尾的压缩文件,因此需要在windows下安装7ZIP软件。
二、gzip压缩工具
.gzip工具负责压缩和解压缩.gz格式的压缩包。
gzip xxx //压缩
gzip -d xxx.gz //解压缩
gzip对文件夹进行压缩
gzip -r xxx //对文件夹进行压缩
gzip -rd xxx.gz //对文件夹进行解压缩
gzip虽然可以对文件夹进行压缩,但是并不能提供打包的服务,只是对文件夹中的所有文件进行了单独的压缩。
二、bzip2压缩工具
和gzip类似,只是bzip2工具负责压缩和解压缩.bz2格式的压缩包。
bzip2 -z xxx //压缩
bzip2 -d xxx.gz //解压缩
三、tar打包工具
tar工具参数:
-f,使用归档文件或 ARCHIVE 设备
-c:创建新归档,创建压缩文件
-x:从图档中解出文件,解压缩
-j:使用bzip2压缩格式。
-z:使用gzip压缩格式
-v:打印出命令执行过程。
tar工具提供打包服务,就是将多个文件打包,比如
tar -vcf test.tar test //将test打包成test.tar
tar -vxf test.tar //解包
上面的tar命令只提供了打包和解包的功能,tar在提供打包和解包的同时使用gzip/bzip2进行压缩,实现类似windwos下winRAR软件的命令。
1、对tar.bz2进行压缩和解压缩
tar -vxjf xxx.tar.bz2 解压缩
tar -vcjf xxx.tar.bz2 xxx 压缩
2、对tar.gz进行压缩和解压缩\
tar -vxzf xxx.tar.gz //解压缩
tar -vczf xxx.tar.gz xxx //压缩
四、其他格式的压缩和解压缩
1、.rar格式
需要先安装rar:sudo apt-get install rar
rar x xxx.rar //解压缩
rar a xxx.rar xxx //压缩
2.zip格式
zip格式压缩使用“zip“命令:
zip -rv xxx.zip xxx
zip格式解压缩使用“unzip”命令:
unzip -v xxx.zip
第11讲 Ubuntu用户与用户组
一、Linux用户
Linux是一个多用户操作系统,不同的用户拥有不同的权限。可以查看和操作不同的文件。 Ubuntu有三种用户:
1、初次创建的用户。
2、root用户
3、普通用户。
初次创建的用户权限比普通用户多,但是没有root用户多,初次创建的用户可以创建普通用户。
Linux用户记录在/etc/passwd这个文件内。
Linux用户密码记录在/etc/shadow这个文件内。
每个用户都有一个ID,叫做UID。
二、Linux用户组
为了方便管理,将用户进行分组。这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。
用户:家里有你、弟弟、妹妹个人,每个人都有自己的房间,你们三个人都是用户,你们都不能随便的乱翻别人的房间。
用户组:你们三个都是一个家庭的,也就是属于同一个用户组,你们三个可以共用厨房,书房等空间。
因此:
用户和用户组的存在就是为了控制文件的访问权限的。
每个用户组都有一个ID,叫做GID。
用户组信息存储在/etc/group文件中。
三、创建用户和用户组
1、图形化界面创建
要使用图形化界面创建用户和用户组的话就需要安装gnome-system-tools这个工具:
sudo apt-get install gnome-system-tools
2、命令创建用户和用户组
添加用户:adduser命令,adduser 用户名
用户查询:finger命令,finger 用户名
修改用户密码:passwd命令,passwd 用户名
删除用户:deluser命令,deluser 用户名
添加用户组:addgroup命令,addgroup 用户组名
显示组内用户名:groups命令,groups 用户组名
删除用户组:delgroup命令,delgroup用户组名
第12讲 Ubuntu文件权限管理
第13讲 Linux链接文件
一、Linux连接文件
Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。
inode:记录文件属性,一个文件一个inode。inode相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。
二、ln命令
ln命令用于创建连接文件:
ln [选项] 源文件 目标文件
选项:-s 创建符号链接(软连接)
-f 强制创建连接文件,如果目标存在,那么先删除掉目标文件,然后再建立连接文件。
三、硬连接
硬链接是多个文件都指向同一个inode,硬链接知识点:
①、具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。
②、对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。
③、根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。
④、不论修改源文件还是连接文件,另一个文件的数据都会被改变。
⑤、硬连接不能跨文件系统。
⑥、硬连接不能连接到目录。
因为以上这些限制,硬链接其实不常用。
四、符号连接(软连接)
符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。软连接的特点:
①、可以连接到目录。
②、可以跨文件系统。
③、删除源文件以后,软连接文件也就“打不开了”。
④、符号连接文件通过->来指示具体的连接文件。
⑤、符号连接要使用绝对路径,否则连接出问题。
第14讲 vim编辑器
一、vim编辑器
Linux系统都会自带vi编辑器,但是vi编辑器太难用了!所以建议大家安装vim编辑器,安装命令:
sudo apt-get install vim
二、vim编辑器三种工作模式
vi xxx 使用vi编辑器打开文件。
一般模式(指令模式):默认模式,用vi打开一个软件以后自动进入到此模式。
编辑模式:一般模式中无法编辑文件,要编辑文件就要进入编辑模式,按下“i、I、a、A、o、O、s、r”等就会进入到编辑模式。一般按下“a”进入编辑模式。按下ESC键可退出编辑模式。
命令行模式(底行模式):先进入到一般模式,然后输入:、/、?这三个中的任意一个就可以进入到命令行模式。
/xxx,表示在文件中查找xxx
三、保存退出
当文件编辑好以后,输入:wq来保存退出。:q退出,:q!不保存退出,:w保存。
四、其他操作方式
1、按下键盘上的上下左右键来控制光标。
一般模式下:
1、dd,删除光标所在行,ndd,删除光标所在行及其下n行。
2、u,撤销,恢复上一步。
3、. ,重复前一个操作。
4、yy,复制光标所在行
5,nyy,复制光标所在向下n行,比如10yy就是复制光标下10行。
6,p和P,p为复制到光标下一行,P复制到光标上一行。
### 第15讲 Linux C编程
第16讲 make工具和Makefile的引入
第17讲 Makefile基本语法
### 第18讲 shell脚本入门
一、什么是shell脚本
我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是shell脚本!
shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件。
shell脚本提供数组、循环、条件判断的等功能。shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握shell脚本最基础的部分即可。
二、shell脚本写法
shell脚本是个纯文本文件,命令从上而下,一行一行的开始执行。shell脚本扩展名为.sh。
shell脚本第一行一定要为:
#!/bin/bash
表示使用bash。
三、shell脚本语法
3.1第一个shell脚本
3.2、交互式shell脚本
read。
3.3shell脚本的数值计算
shell仅支持整形,数值计算使用$((表达式))。
3.4、test命令
test命令用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。
&&和||命令:
cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行。
cmd1 || cmd2 当cmd1执行完毕并正确,那么cmd2不执行,反之cmd2执行。
3.5中括号[]判断符
[ ] ==或 !=
3.6默认变量
$0~$n,表示shell脚本的参数,包括shell脚本命令本身,shlle脚本命令本身为$0
$#:#表示最后一个参数的标号。
$@:表$1、$2、$3......
第19讲shell脚本条件判断、函数和循环
一、shell脚本条件判断
shell脚本支持条件判断,虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。shell脚本提供了if then条件判断语句,写法
if 条件判断 ; then
//判断成立要做的事情
fi
还有if then else 语句,写法
if 条件判断 ; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
或:
if 条件判断 ; then
//条件判断成立要做的事情
elif [条件判断]; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
最后还有case语句
case $变量 in
“第1个变量内容”)
程序段
;; //表示该程序块结束!!
“第2个变量内容”)
程序段;;
“第n个变量内容”)
程序段
;;
esac
二、shell脚本函数
shell脚本也支持函数,函数写法如下:
function fname () {
//函数代码段
}
三、shell循环
shell脚本也支持循环,比如 while do done,表示当条件成立的时候就一直循环,直到条件不成立。
while [条件] //括号内的状态是判断式
do //循环开始
//循环代码段
done
还有另外一种until do done,表示条件不成立的时候循环,条件成立以后就不循环了,写法如下:
until [条件]
do
//循环代码段
done
for循环,使用for循环可以知道有循环次数,写法
for var in con1 con2 con3……
do
//循环代码段
done
for循环数值处理,写法
for((初始值; 限制值; 执行步长))
do
//循环代码段
done