嵌入式Linux学习笔记(1)

来源:互联网 发布:业务流程和数据流程 编辑:程序博客网 时间:2024/06/05 12:44

一、基本概念

1、文件系统:对计算机数据的分类存储。
2、文件和目录:对数据的一种分类。
3、/:(1)作根目录名(处于开头);(2)作分割符(不在开头)。
4、路径:
(1)绝对路径:从”/”目录出发的路径;如:/home/linux/截图软件。
(2)相对路径:从当前位置出发,描述文件或者目录的路径,如:linux/截图软件。
(3)当前路径:当前位置。

二、Linux基本操作

1、查询当前位置:pwd
2、查询当前目录下的内容:ls
(1)ls -a 显示所有文件(包括隐藏文件)
(2)ls -l 以列表形式显示文件
(3). 表示当前路径
(4).. 表示上一级目录
3、进入目录:cd 目录路径
(1)cd . 返回上一级目录
(2)cd 回到用户自己的主目录
4、拷贝文件:cp 源文件路径 目标文件路径
5、移动文件:mv 源文件路径 目标文件路径
6、删除文件:rm -f 文件路径
7、创建目录:mkdir 目录路径
8、删除目录:rm -rf 目录路径

三、嵌入式Linux C语言编程环境

(1)嵌入式Linux下的编辑器vi(vim)
(2)嵌入式Linux下的编译器GCC
(3)嵌入式Linux下的调试器GDB
(4)嵌入式Linux下的工程管理器make

1、嵌入式Linux下的编辑器vi(vim)

编辑器vi(vim)有三种工作模式:命令行模式,插入模式(编辑模式),底行模式。

[1] 打开文件 vim test.c
[2] 编辑
(1)进入插入模式: i (左下方会有“–INSERT–”字样)
(2) 插入:直接输入字符
(3)移动光标:方向键
(4)删除字符: backspace
(5)进入命令模式:ESC
(6)删除单个字符:x
(7) 拷贝一行: yy
(8)粘贴: p
(9)删除一行:dd
(10) 撤销操作: u
(11) 搜索: :/搜索内容
[3] 保存退出
(1)保存 :w
(2)另存为 :w test.c
(3)退出 :q
(4)强制退出 :q!
(5)保存并退出 :wq

2、嵌入式Linux下的编译器GCC

GCC的编译流程分4个步骤:
(1)预编译 pre-processing
(2)编译 compiling
(3)汇编 assembling
(4)链接 linking

GCC所支持不同后缀名的处理方式:
这里写图片描述

[1] 预编译阶段(test.c —> test.i)

预编译阶段的工作:
- 处理所有的注释,以空格代替;
- 将所有的#define删除,并且展示所有的宏定义;
- 处理条件编译指令#if,#else,#elif,#ifdef,#endif;
- 处理#include,展示被包含的文件;
- 保留编译器需要使用的#pragma指令;

预处理指令:
gcc -E [编译文件] -o [目标文件]
如:gcc -E test.c -o test.i

[2] 编译阶段(test.i —> test.s)

编译阶段的工作:
- 对预处理文件进行一系列词法分析,语法分析和语义分析;
- ……………词法分析主要分析关键字,标示符,立即数等是否合法
- ……………语法分析主要分析表达式是否遵循语法规则
- ……………语义分析在语法分析的基础上进一步分析表达式是否合法
- 分析结束后进行代码优化生成相应的汇编代码文件;

编译指令:
gcc -S [编译文件] -o [目标文件]
如:gcc -S test.i -o test.s

[3] 汇编阶段(test.s —> test.o)

汇编阶段的工作:
- 汇编器将汇编代码转变为机器可以执行的指令;
- 每个汇编语句几乎都对应一条机器指令;

汇编指令:
gcc -c [编译文件] -o [目标文件]
如:gcc -c test.s -o test.o

[4] 链接阶段(test.o —> a.out)

连接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接。

GCC的整个编译流程:

整个编译指令:
gcc [编译文件] -o [编译后的可执行文件名]
./[可执行文件名]

如:gcc test.c -o test
如:./test

test.c —> (test.i –> test.s –> test.o) —> a.out(默认可执行文件名)

3、嵌入式Linux下的调试器GDB

进入调试器指令:
gcc [编译文件] -o [编译后的可执行文件名] -g
gdb [编译后的可执行文件名]

如:gcc test.c -o test -g
如:gdb test

在调试器GDB下的基本操作:
(1)查看文件(gdb):l
(2)设置断点(gdb):b 行号
(3)运行代码(gdb):r (行号)
(4)打印变量或表达式的值(gdb):p 变量名
(5)查看某个表达式的数据类型(gdb):whatis 变量
(6)退出GDB(gdb):q

如(gdb):p sizeof(类型) 打印某类型的字节数
如(gdb):p /b 表达式 以二进制的形式打印某个表达式

4、嵌入式Linux下的工程管理器make

(待学习理解后,继续跟进!)

原创粉丝点击