"stc8h系列单片机技术参考手册及GNU Make中文手册"
这篇文档主要涉及了两个方面的知识:单片机编程的基础概念和GNU Make的使用。
1. **单片机基础知识**
- **编译**:这是将高级语言(如C/C++)转换成机器可执行的二进制代码的过程。编译器会检查源代码的语法和变量声明,生成中间目标文件(.o文件)。每个源文件通常对应一个目标文件。
- **链接**:链接器的作用是将多个目标文件和库文件整合,形成最终的可执行程序。它处理符号引用,完成重定位,并加入必要的系统文件,如启动代码,生成ELF格式的可执行文件。在Linux中,链接器通常是ld工具。
- **静态库**(.a文件):它是多个.o文件的集合,不包含执行代码,但在编译时会被合并到目标代码中,使得每个目标程序包含完整的库代码副本。
- **共享库**(.so文件):与静态库不同,共享库在运行时动态加载到内存,多个程序可以共享其代码段,减少了内存占用。它们是经过特殊处理的ELF文件,包含相对地址,由libdl.so支持。
2. **GNU Make**
- **概述**:GNU Make是一款自动化构建工具,用于管理编译过程。它读取Makefile,根据其中的规则决定哪些文件需要更新。
- **Makefile**:包含构建项目的规则和变量定义。一个Makefile可以包含目标、依赖和构建命令。
- **规则**:规则定义了如何从依赖文件生成目标文件,包括命令行指令。
- **变量**:Makefile中使用变量来存储重复的信息,减少代码冗余。
- **自动推导**:Make可以自动推导某些类型的依赖关系,如C编译的源文件和目标文件之间的关系。
- **目录搜索**:通过VPATH变量或vpath关键字,可以在多个目录中查找依赖文件。
- **伪目标**和**特殊目标**:如`.PHONY`用于标记非实际文件的目标,确保命令始终执行。
- **静态模式规则**:提供了一种更灵活的方式来定义规则,适用于大量类似文件的构建。
整个文档旨在为开发者提供编写和理解Makefile的基础知识,以及关于stc8h系列单片机编程的基本概念,这对于理解嵌入式系统的开发流程至关重要。