嵌入式复习——第二章
嵌入式复习——第二章
Linux 基础命令
useradd [选项] 用户名
- 创建用户
- 需要 root 权限
passwd [用户名]
- 修改密码
- 需要 root 权限
ps [选项]
- 查看进程
- 选项:
- -ef 查看所有进程的信息
kill [选项] PID
- 杀死进程
fdisk [-l]
- 查看磁盘分区
- 需要 root 权限
mount [选项] [类型] 设备名 挂载目录
- 挂载磁盘
- 需要 root 权限
- 设备名可以通过 fdisk 查看
- 例
sudo mount /dev/sdb3 disk
是将 /dev/sdb3 设备挂载到 ~/disk 目录上
umount 挂载目录
- 卸载磁盘
- 需要 root 权限
mkdir [选项] 路径
- 创建目录
- 选项
- -m 设置权限,用法类似于 chmod
- -p 可以是一个路径名称,不存在的目录会自动创建
cat [选项] 文件 1 文件 2 ……
- 查看文件,多个文件就合并在一起查看
- 选项
- -n 显示行号
- -b 显示非空白行行号
cp [选项] 源目录 目的目录
- 复制文件
- 选项
- -a 保留所有内容
mv [选项] 源目录 目的目录
- 移动文件
- 选项
- -i 有覆盖就询问
rm [选项] 文件目录名
- 删除文件或目录
- 选项
- -i 交互式删除,安全
- -r 递归删除目录子目录
- -f 忽略不存在的文件不给出提示
chmod [选项] 符号权限 文件
或者 chmod [选项] 八进制权限 文件
- 设置权限
- 第一种方法
- a/u/g 表示对所有用户,所有者,用户组操作权限
- +/-/= 表示添加删除设置权限
- r/w/x 表示读写执行权限
- 例
chmod +x a.py
把该文件给当前用户增加执行权限
- 第二种方法
- 三个数是八进制数,八进制展开为三个二进制位分别表示表示读写执行,例如 5 就是 101 也就是只读和执行
- 例
chmod 666 disk
给 disk 目录对于所有用户、群组、所有者增加读写权限
- 选项
- -R 递归操作,可以给文件夹的所有文件来修改权限
小练习
在 Ubuntu home 目录创建两个文件夹 con1 与 con2,挂在 U 盘到 con1 中,把 con1 中的文件复制到 con2 中,并把 con2 中所有文件改为可读可写
cd ~
mkdir con1 con2
sudo fdisk -l # 查看 U 盘设备名
mount /dev/sdb1 con1
cp -a con con2
chmod -R 666 con2 # R 是递归操作,对里面的所有文件夹
C 编程基础
gcc 的编译流程
- 预处理,处理头文件、宏,产生 .i 文件
- 编译,产生 .s 文件
- 汇编,产生 .o 文件
- 链接,产生可执行文件
makefile
规则
目标: 依赖
命令
平凡的样例
david: kang.o yul.o
gcc kang.o bar.o -o myprog
kang.o: kang.c kang.h head.h
gcc -Wall -O -g -c kang.c -o kang.o
yul.o: bar.c head.h
gcc -Wall -O -g -c yul.c -o yul.o
clean:
rm -f myprog
其中从上到下是和编译的顺序相反,也就是一层层向内调用获得依赖
带有变量的样例
OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
david: $(OBJS)
$(CC) $(OBJS) -o myprog
kang.o: kang.c kang.h head.h
$(CC) $(CFLAGS) -c kang.c -o kang.o
yul.o: bar.c head.h
$(CC) $(CFLAGS) -c yul.c -o yul.o
clean:
rm -f myprog
其中变量是 $(变量名) 的形式来使用的
小练习
在 home 目录下使用 vi 创建 sum.c 文件,比阿尼额代码,实现数字 1 累加到 100 的程序
(1)使用 gcc 编译器编译,生成目标文件 sum_gcc 并执行
(2)编写 makefile 文件,编译 sum.c 文件生成目标文件 sum_makefile 并执行
vi sum.c
gcc -o sum.c sum_gcc
./sum_gcc
vi makefile
makefile
sum: sum.o
gcc sum.o -o sum
sum.o: sum.c
gcc -c sum.c -o sum.o
clean:
rm -f sum
Bootloader
Bootloader 就是在操作系统的内核运行之前的一段程序,它类似于 PC 中的 BIOS 程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射关系,从而将系统的软硬件环境带到一个合适的状态,为最终加载系统内核做好准备。