目录
前言
前一段时间学习Linux驱动,实在是迷糊了。
决定整理笔记,争取消除困惑。
打算从基础(Ubuntu入门)开始,把笔记整理一番。
全文大量参考正点原子的教程,在此对正点原子团队表示感谢。
一、Ubuntu系统安装
简单来说,分两步:1.安装VMware。2.安装Ubuntu。
过程很简单,我是参考正点原子教程安装的,当然也遇到了一些问题,总结如下:
1.1 VMware15安装虚拟机不兼容,无法打开
先把VMware15卸载,然后安装VMware16。
VMware15卸载参考:https://blog.csdn.net/qq_45011675/article/details/105476677
VMware16安装教程:https://blog.csdn.net/m0_50519965/article/details/116175873
1.2 Ubuntu联网问题
安装好的Ubuntu无法联网,下面是找的一种联网方式,可参考。
链接:让Ubuntu联网
二、Ubuntu系统入门
2.1 Ubuntu系统初体验
熟悉一下这个系统的图形界面,直接上图。
2.2 Ubuntu终端操作
鼠标右击,选择打开终端。
命令“ls”是打印出当前所在目录中所有文件和文件夹。
2.3 shell操作
2.3.1 shell简介
严格意义上来讲,Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作,Shell 负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作,然后将结果反馈给应用层或者用户。
2.3.2 Shell 基本操作
command -options [argument]
lsls -lls /usr
运行结果如下:
注:Shell 命令支持自动补全功能,使用自动补全功能以后我们只需要输入命令的前面一部分字母,然后按下 TAB 键,如果只有一个命令匹配的话就会自动补全这个命令剩下的字母。如果有多个命令匹配的话系统就会发出报警声音,此时在按下一次 TAB 键就会列出所有匹配的命令。
2.3.3 常用shell命令
ls [选项] [路径]
2.4 APT下载工具
APT 工具常用的命令如下:
1、更新本地数据库
sudo apt-get update
这个命令会访问源地址,并且获取软件列表并保存在本电脑上。
2、检查依赖关系
sudo apt-get check
3、软件安装
sudo apt-get install package-name
sudo apt-get install minicom
您希望继续执行吗? [Y/n]
sudo apt-get upgrade package-name
sudo apt-get remove package-name
2.5Ubuntu 下文本编辑
我个人比较喜欢的文本编辑方式是:
在Windows上编辑后,拷贝到Ubuntu。
Windows:notepad++ Ubuntu:vim
2.5.1 安装 VIM 编辑器:
sudo apt-get install vim
2.5.2 vim编辑器的使用
指令式的编辑器,不需要鼠标,也没有菜单,仅仅使用键盘来完成所有的编辑工作。
三种工作模式:输入模式、指令模式和底行模式,通过切换不同的模式可以完成不同的功能。
VIM 默认是以只读模式打开的文档,因此我们要切换到输入模式,切换到输入模式的命令如下:
按下键盘上的“a”键,这时候终端左下角会提 示“插入”字样,表示我们进入到了输入模式。
从 输入模式切换到指令模式:按下键盘的 ESC 键。
指令模式顾名思义就是输入指令的模式,这些指令是控制文本的指令:
1、移动光标指令:
2.6 Linux 文件系统
操作系统的基本功能之一就是文件管理,而文件的管理是由文件系统来完成的。Linux 支持多种文件系统,本节我们就来讲解 Linux 下的文件系统、文件系统类型、文件系统结构和文件系统相关 Shell 命令。
2.6.1 Linux 文件系统简介以及类型
Linux 下常用的磁盘分割工具为: fdisk 工具。
后面会用到:移植 Linux 的时候需要将 SD 卡分为两个分区来存储不同的东西。
格式化:使用 fdisk 创建好分区以后也是要先在创建好的分区上面创建文件系统。
在 Linux 下创建一个分区并且格式化好以后我们要将其 “挂载”到一个目录下才能访问这个分区。Linux 下我们使用 mount 命令来挂载磁盘。挂载磁盘的时候是需要确定挂载点 的,也就是你的这个磁盘要挂载到哪个目录下。
ext4 文件系统
在终端中输入如下命令来查询当前磁盘挂 载的是啥文件系统:
df -T -h
2.6.2 Linux 文件系统结构
根目录“/”
创建一个用户,系统会在/home 这个目录下创建一个以这个用户名命名的文件 夹,这个文件夹就是这个用户的根目录(“~”)。
cd / //进入到根目录“ / ”ls //查看根目录“ / ”下的文件以及文件夹
2.6.3 文件操作命令
1、创建新文件命令—touch
touch [参数 ] [文件名 ]
2、文件夹创建命令—mkdir
mkdir [ 参数 ] [ 文件夹名目录名 ]
rm [ 参数 ] [目的文件或文件夹目录名 ]
rmdir [ 参数 ] [ 文件夹 ( 目录 )]
cp [ 参数 ] [源地址 ] [目的地址 ]
mv [ 参数 ] [源地址 ] [目的地址 ]
2.6.4 命令行进行文件的压缩和解压缩
命令行下进行压缩和解压缩常用的命令有三个:zip、unzip 和 tar。
zip [ 参数 ] [ 压缩文件名 .zip] [ 被压缩的文件 ]
unzip [参数 ] [压缩文件名 .zip]
tar [ 参数 ] [压缩文件名 ] [被压缩文件名 ]
tar -vcjf test1.tar.bz2 test1tar -vczf test1.tar.gz test1
tar -vxjf test1.tar.bz2tar -vxzf test2.tar.gz
2.6.5 文件查询和搜索(没怎么用过)
1、命令 find
find [路径 ] [参数 ] [关键字 ]
2、命令 grep
grep [ 参数 ] 关键字 文件列表
2.6.6文件类型
2.7 Linux 用户权限管理
2.7.1Ubuntu 用户系统
cat /etc/passwd
2.7.2权限管理
-rw-rw-r-- 1 wurao wurao 0 10 月 12 21:14 test.c
权限所对应的八进制数字就是每个权限对应的位相加,比如权限 rwx 就是 4+2+1=7。前面的文件 test.c 其权限为“rw-rw-r--”,因此其十进制表示就是:664。
另外我们也开始使用 a、u、g 和 o 表示文件的归属关系,用=、+和-表示文件权限的变化。
2.7.3 权限管理命令
1、权限修改命令 chmod
chmod [ 参数 ] [文件名 / 目录名 ]
chomd 766 test
chown [参数 ] [用户名 .< 组名 >] [ 文件名 / 目录 ]
2.8 Linux磁盘管理
2.8.1 Linux磁盘管理基本概念
cat /etc/fstab
ls /dev/sd*
2.8.2 磁盘管理命令
1、磁盘分区命令 fdisk(放在后面详细操作)
fdisk [参数 ]
sudo fdisk /dev/sdb
三、Linux C 编程入门
Ubuntu 下也有一些可以进行编程的工具,但是大多都只是编辑器,也就是只能进行代码编辑。
Ubuntu 下要编译的话就需要用到 GCC 编译器,使用 GCC 编译器肯定就要接触到Makefile。
3.1 Hello World!
编写代码包括两部分:代码编写和编译。
代码编写用 notepad++ (Windows)和 VIM(Ubuntu)。
编译:GCC 编译器。
3.1.1编写代码
cd ~
mkdir C_Program
cd C_Program
mkdir 3.1
set ts=4
set nu
cd 3.1vi main.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World!\n");
}
cat main.c
3.1.2 编译代码
Ubuntu 下的 C 语言编译器是 GCC,GCC 编译器在我们安装 Ubuntu 的时候就已经默认安装好了,可以通过如下命令查看 GCC 编译器的版本号:
gcc -v
gcc main.c
gcc main.c –o main
3.2 GCC编译器
3.2.1 gcc 命令
gcc [ 选项 ] [文件名字 ]
3.2.2 编译错误警告
GCC 编译器和其它编译器一样,不仅能够检测出错误类型,而且标记除了错误发生在哪个文件、哪一行,方便我们去修改代码。
3.2.3 编译流程
GCC 编译器的编译流程是:预处理、汇编、编译和链接。预处理就是对程序中的宏定义等相关的内容先进行前期的处理。汇编是先将 C 文件转换为汇编文件。当 C 文件转换为汇编文件以后就是文件编译了,编译过程就是将 C 源文件编译成.o 结尾的目标文件。编译生成的.o 文 件不能直接执行,而是需要最后的链接,如果你的工程有很多个 c 源文件的话最终就会有很 多.o 文件,将这些.o 文件链接在一起形成完整的一个可执行文件。
上一小节演示的例程都只有一个文件,而且文件非常简单,因此可以直接使用 gcc 命令生成可执行文件,并没有先将 c 文件编译成.o 文件,然后在链接在一起。
3.3 Makefile 基础
3.3.1 何为Makefile
3.3.2 Makefile 的引入
3.4 Makefile 语法
3.4.1 Makefile 规则格式
3.4.2 Makefile 变量
3.4.3 Makefile 模式规则
3.4.4 Makefile 自动化变量
3.4.5 Makefile 伪目标
3.4.6 Makefile 条件判断
3.4.7 Makefile 函数使用
本篇总结
重点是各种shell命令的使用和Makefile。
shell多敲就会了,Makefile还很陌生。
Makefile 部分内容待整理,整理好更新文章。