知识卡片

映射文件解释代码膨胀

普通读书笔记卡 · 1800.b

内容

链接器映射文件能显示哪些对象和库被拉进最终映像,以及是谁引用了它们。发散:当代码空间突然变大时,先查 map 文件,往往比凭直觉删代码更快找到真正来源。

参考来源

- 位置:《嵌入式系统设计与实践》第8章《事半功倍》"8.1.1 读映射文件(第1部分)"一节(源文件:_epub-src/OEBPS/text00112.html附近) - 结论依据:原文明确"在LPC13xx的GNU链接器生成的映射文件中,开始部分列出了包含的库模块以及这些模块被代码中哪些模块所包含。在这个例子中,libcr_c.a包含在了构建过程中,因为代码模块aes256.c调用了函数memcpy()",说明映射文件能追溯代码膨胀的来源。 - 原始内容:在LPC13xx的GNU链接器生成的映射文件中,开始部分列出了包含的库模块以及这些模块被代码中哪些模块所包含……在阅读内存映射文件的时候,要首先注意那些消耗空间最大的部分。可能会发现有些并不期望被包含的库却被包含了进来。这时候,应该跟踪这些函数看看对这些库的调用来自哪里。