嵌入式Linux学习笔记(1)

一、基本概念

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

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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答你关于野火嵌入式Linux学习的问题!以下是一些学习笔记的建议: 1. 了解嵌入式系统:首先,你需要了解嵌入式系统是什么以及它们与桌面操作系统的区别。嵌入式系统通常用于特定的应用领域,例如智能家居、汽车电子和工业控制等。 2. 学习Linux基础知识:野火嵌入式Linux是基于Linux内核的操作系统,所以你需要掌握Linux的基础知识,包括文件系统、进程管理、设备驱动程序等。 3. 硬件平台了解:野火嵌入式Linux有不同的硬件平台,例如野火开发板。你需要学习如何操作和配置这些硬件平台,并了解它们的特性和限制。 4. 交叉编译环境设置:为了在PC上开发嵌入式系统,你需要设置一个交叉编译环境,以便能够编译和调试嵌入式应用程序。这涉及到安装和配置交叉编译工具链。 5. 内核定制和驱动程序开发:学习如何定制Linux内核以满足特定需求,并开发设备驱动程序以支持外部硬件。 6. 应用程序开发:掌握嵌入式应用程序的开发技术,包括使用C/C++语言、Makefile和调试工具。 7. 调试和故障排除:学会使用调试工具和技术来定位和解决嵌入式系统中的问题。 8. 实际项目经验:通过参与实际的嵌入式项目或完成一些小型项目来应用你的知识和技能。 这些只是一些学习笔记的建议,野火嵌入式Linux学习需要不断的实践和探索。希望这些对你有帮助!如果你有任何进一步的问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值