我有一个嵌入式应用程序。在资源(包括代码存储区)方面,运行程序的平台非常有限。
所以我有一个庞大的开源库( .c 和 .h 文件),它与我的应用程序(用户)文件一起构建。
假设我在main.c
中有一个简单的程序,它从不调用任何库函数。示例:
#include "main.h"
volatile int a;
int main()
{
while(1)
{
if(a)
{
a=0;
}
}
return 0;
}
在上面的示例中,假设 main.h 包含所有库头文件。
.text
或ROM
节的大小(在我看来)应该很小,因为该程序不需要(在当前开发状态下)任何库函数(假设我包括它们以进行过早的设计。
代码存储器的大小是否会和包含所有已编译符号的大小一样大?或者(某种程度上),链接器足够聪明,可以知道未引用的符号在输出中没有位置?
如果是,那么确定要在输出中放置(从目标文件池中)什么符号的机制是什么?
答案 0 :(得分:0)
我想添加我的问题的答案,因为到目前为止,还没有人只是评论类型,因为这是链接程序的工作方式(不提供任何信息)。因此,经过大量搜索,我遇到了this这样的问题。 它解释了链接器决策算法背后的机制。 即留下的东西和消失的东西:)。