@@ -163,6 +163,14 @@ Linker页面设置链接文件。 | |||||
设置库文件相关位置,同时在程序内include头文件,使用库。 | 设置库文件相关位置,同时在程序内include头文件,使用库。 | ||||
| 选项 | 功能描述 | | |||||
| ------ | ------------------------------------------------------------ | | |||||
| none | 不链接任何标准库,适合资源受限的环境。 | | |||||
| normal | 链接标准 C 库的常规版本,平衡了代码大小和运行速度。 | | |||||
| full | 链接标准 C 库的完整版本,包含所有功能和调试信息,适合调试阶段。 | | |||||
| custom | 允许用户自定义库配置,可选择性地包含或排除某些库功能,用于优化代码大小。 | | |||||
| libc++ | 链接 C++ 标准库,适用于 C++ 开发。 | | |||||
 |  | ||||
### 6.静态库的封装和调用 | ### 6.静态库的封装和调用 | ||||
@@ -215,6 +223,10 @@ Linker页面设置链接文件。 | |||||
<img src=".\Pictures\image-20250708152951214.png" alt="image-20250708152951214" style="zoom:50%;" /> | <img src=".\Pictures\image-20250708152951214.png" alt="image-20250708152951214" style="zoom:50%;" /> | ||||
r0~r3 主要用于子程序间传递参数, r4~r11 主要用于保存局部变量,但在 Thumb 程序中,通常只能使用 r4~r7 来保存局部变量; r12 用作子程序间scratch 寄存器,即 ip 寄存器; r13 通常用做栈指针,即 sp; r14 寄存器又被称为连接寄存器(lr),用于保存子程序以及中断的返回地址; r15 用作程序计数器(pc),由于 ARM 采用了流水线机制,当正确读取了 PC 的值后,该值为当前指令地址加 8 个字节,即 PC 指向当前指令的下两条指令地址。 | |||||
CPSR和SPSR都是程序状态寄存器,其中SPSR是用来保存中断前的CPSR中的值,以便在中断返回之后恢复处理器程序状态。s | |||||
### 10.内存信息 | ### 10.内存信息 | ||||
打开view的memory窗口即可查看寄存器信息 | 打开view的memory窗口即可查看寄存器信息 | ||||
@@ -13,21 +13,11 @@ | |||||
**优点** | **优点** | ||||
独立性:可执行文件包含所有依赖,无需外部库文件,部署简单。 | |||||
性能:函数调用无额外开销(无动态链接加载过程)。 | |||||
兼容性:避免版本冲突(如“DLL Hell”问题)。 | |||||
代码优化:编译器可进行全程序优化(LTO)。 | |||||
代码合并到模块中,无零散文件。 | |||||
**缺点:** | **缺点:** | ||||
体积大:相同库代码被多次复制到不同程序,占用磁盘/内存。 | |||||
更新困难:库更新需重新编译所有依赖它的程序。 | |||||
内存浪费:多个进程无法共享同一库的物理内存。 | |||||
程序体积变大,当多个模块使用时,内存中有多份代码。 | |||||
#### 1.2静态库的生成 | #### 1.2静态库的生成 | ||||
@@ -69,23 +59,11 @@ | |||||
**优点:** | **优点:** | ||||
节省资源:多个进程共享同一库,减少内存/磁盘占用。 | |||||
更新灵活:更新库文件后,所有程序自动使用新版本(需兼容)。 | |||||
模块化:支持插件机制(运行时加载)。 | |||||
热修复:可替换库文件修复问题(无需重编译程序)。 | |||||
模块体积几乎不变,当多个模块调用是,只有一份代码。 | |||||
**缺点:** | **缺点:** | ||||
部署复杂:需确保目标系统存在正确版本的库(依赖管理)。 | |||||
版本冲突:不同程序依赖同一库的不兼容版本(如DLL Hell)。 | |||||
性能损耗:首次加载需地址重定位,轻微运行时开销。 | |||||
安全性:恶意替换库文件可能导致安全隐患。 | |||||
代码在单独文件中,有零散文件。 | |||||
#### 2.2动态库的生成 | #### 2.2动态库的生成 | ||||
@@ -22,6 +22,8 @@ | |||||
选择上方菜单栏的Project,并选择其中的Synchronize Files进行代码的同步。 | 选择上方菜单栏的Project,并选择其中的Synchronize Files进行代码的同步。 | ||||
选项功能是选择同步本地文件。 | |||||
<img src="./Pictures/image-20250708160555697.png" alt="image-20250708160555697" style="zoom:50%;" /> | <img src="./Pictures/image-20250708160555697.png" alt="image-20250708160555697" style="zoom:50%;" /> | ||||
#### 1.4视图切换 | #### 1.4视图切换 | ||||
@@ -140,6 +140,12 @@ Sourcetree 是一款由 Atlassian 开发的免费图形化版本控制客户端 | |||||
合并分为平行合并和变基合并,平行合并会将分支的内容一次性挪到主干,变基合并会将分支的提交一个一个合并到主干。 | 合并分为平行合并和变基合并,平行合并会将分支的内容一次性挪到主干,变基合并会将分支的提交一个一个合并到主干。 | ||||
**软合并**:将问题放到暂存区。 | |||||
**混合合并**:若是分支领先,则直接提交,如果出现分叉,则会进行合并提交。 | |||||
**强制合并**:强制生成合并提交。 | |||||
<img src="./Pictures/image-20250708161247753.png" alt="image-20250708161247753" style="zoom:50%;" /> | <img src="./Pictures/image-20250708161247753.png" alt="image-20250708161247753" style="zoom:50%;" /> | ||||
#### 3.3删除分支 | #### 3.3删除分支 | ||||
@@ -26,6 +26,8 @@ | |||||
<img src=".\Pictures\image-20250709124004987.png" alt="image-20250709124004987" style="zoom:50%;" /> | <img src=".\Pictures\image-20250709124004987.png" alt="image-20250709124004987" style="zoom:50%;" /> | ||||
#### 2.2代码覆盖度 | #### 2.2代码覆盖度 | ||||
概念:**单元测试覆盖度**是衡量测试用例对代码逻辑覆盖程度的重要指标,通常包括行覆盖、分支覆盖、条件覆盖和路径覆盖等类型。它帮助开发者评估测试的全面性,确保代码的质量和稳定性。 | 概念:**单元测试覆盖度**是衡量测试用例对代码逻辑覆盖程度的重要指标,通常包括行覆盖、分支覆盖、条件覆盖和路径覆盖等类型。它帮助开发者评估测试的全面性,确保代码的质量和稳定性。 | ||||
@@ -104,6 +104,13 @@ | |||||
右键项目名称,打开项目属性页,选择“配置属性”->“C/C++”->“代码生成”->“运行库”。 | 右键项目名称,打开项目属性页,选择“配置属性”->“C/C++”->“代码生成”->“运行库”。 | ||||
| **选项** | **链接方式** | **依赖项** | **程序体积** | **调试信息** | **适用场景** | | |||||
| -------- | ------------ | ------------------------ | ------------ | ------------ | -------------------------- | | |||||
| /MT | 静态链接 | 无(独立部署) | 较大 | 无 | 独立应用、嵌入式系统 | | |||||
| /MTd | 静态链接 | 无(包含调试符号) | 最大 | 有 | 调试独立应用 | | |||||
| /MD | 动态链接 | msvcrt.dll(或更高版本) | 较小 | 无 | 常规应用程序(共享运行库) | | |||||
| /MDd | 动态链接 | msvcrtd.dll(调试版) | 中等 | 有 | 调试依赖 DLL 的应用程序 | | |||||
<img src="./Pictures/image-20250709084116006.png" alt="image-20250709084116006" style="zoom:50%;" /> | <img src="./Pictures/image-20250709084116006.png" alt="image-20250709084116006" style="zoom:50%;" /> | ||||
#### 2.7调用库配置 | #### 2.7调用库配置 | ||||