当前位置:首页 > 内存 > 正文

动态库内存映射区

  • 内存
  • 2024-08-23 20:06:27
  • 678

一、什么叫静态库和动态库两者的区别:
1.使用静态库需要满足以下条件:
1
包含相应的头文件,告诉编译器lib文件中指定了哪些内容
2
设置lib文件允许编译器找到编译后的二进制代码
2.使用动态库:
程序运行时必须加载动态库。
3.依赖关系:
静态链接意味着稳定。编译链接后,
lib库中所需的资源已经存在于可执行程序中,
即静态存在,无依赖
实时动态是指运行时加载所需的资源、
动态库
必需的必须在运行时提供。有依赖,
运行时找不到库就无法运行
第四个区别:
简单来说,静态库直接将需要的库插入到可执行程序的代码中;动态库是指当其中需要调用某个函数时,根据函数映射表找到该函数,然后在栈上调用执行。
转换为静态库的可执行文件本身比较大,但不需要附带动态库
转换为动态库的可执行文件比较小,但需要附带附有动态库
第五:
首先纠正所谓的“静态链接就是把需要的库函数放在你的exe文件中”。在现实世界中,存在三个概念:使用静态
库、静态
链接
dll和动态
链接
dll。libary

static
linked
dll的概念,当然,它们之间存在欺骗性的“相似之处”。例如使用.lib,下面会详细说明。
使用静态库(Use
staticlibrary
)就是在目标文件中一起创建.lib和其他obj。目标文件可以是.exe、.dll或.oxc。我在等待。正常情况下,可能根本不存在“匹配的”.dll文件,例如c
run
time(crt)库。一个例子是编写main(){},构建的结果只有几个字节。当然,有人会说还有exe文件头?是的,即使加上文件头大小,生成的可执行文件仍然“大得难以理解”。其实多出来的部分就是CRT固件库。将.lib静态库视为包含函数实现的外部程序的obj文件更有意义。
二、(三)日常开发笔记—Keil5工具软件的配置界面详解在日常开发中,了解Keil5工具软件的配置界面至关重要。首先,从设备选择界面开始,选择具体的微控制器型号。
在Target界面,配置涉及操作系统(一般不选择Keil自带的RTX)、系统预览文件(默认使用内置的)、ARM编译器的选择。使用默认版本5,是否启用跨模块通常不勾选,微库一般勾选,浮点硬件支持根据MCU特性确定。ROM存储地址分为片内和片外。片内通常用于程序下载,片外用于大型项目或特殊需求。RAM存储地址也分为片内和片外,存储运行时数据。
输出接口定义了输出文件路径、可执行文件名和调试信息生成选项,包括HEX文件、浏览信息和批处理文件。取消选择这些选项可以加快编译过程。同时,选择输出库。这是一个静态库,而不是动态库。
Listing界面设置文件路径、页面大小以及程序集和编译列表选项。内存映射详细信息,例如入口地址、加载区域和执行区域,显示了程序在内存中的分布。
用户界面提供用户定义的选项,例如编译后执行操作,例如运行用户程序。C/C++接口涉及预处理器符号、代码生成选项(例如优化级别)和代码结构控制。Linker接口管理内存布局,包括加载区域独立性、警告处理和分散文件的管理。
Debug界面是调试的核心,包括选择下载器类型、J-Link配置以及下载动作设置,如擦除、编程、验证等。LoadApplicationatStartup选项控制程序启动行为,而DebugSessionSettings管理调试会话设置。
实用程序界面配置,例如Flash菜单命令、目标驱动程序自动更新和图像文件处理。这些设置共同确保了项目的高效开发和调试过程。