嵌入式系统头功能

MrG*_*igu 5 c embedded

我是嵌入式系统的新手,想要了解更多,

我目前正在优化一个关于ARM嵌入式系统的占用空间的软件,并且想知道你在源文件中包含的头文件.它们放在哪里?

现在我只是使用软件(OVP)来模拟ARM硬件平台,但在实际硬件中,你必须将头文件放在某个地方吗?就像在gcc上有高清标准库一样.我们还必须在嵌入式计算机中插入此库吗?空间有限!有没有办法减少图书馆的大小?谢谢!

#include <stdio.h>

#include <stdlib.h>

我正在使用交叉编译器arm-elf-gcc

最好的祝福

吉古先生

Cli*_*ord 11

您似乎对编译的可执行代码有一些基本的误解.以下内容适用于嵌入式和桌面系统.

头文件只不过是其他任何源文件.不同之处在于它们由预处理器插入编译单元而不是直接编译.在大多数情况下,它们仅包含声明性语句,并且通常不会在可执行指令或存储数据的意义上对生成的代码做出贡献.

在运行时没有任何的源代码是需要对目标存在; 编译器的工作是从源生成本机可执行机器代码.正是这个机器代码存储并在目标上运行.

头文件与库不同.它(仅仅)(通常)是库内容的声明(函数原型和其他符号声明,例如常量,数据,宏,枚举).该库采用存储在组合存档中的预编译/汇编目标代码的形式.链接器的工作是将所需的库代码与从您自己的源代码编译生成的目标代码组合在一起.这是在目标上存储和执行的链接可执行文件,而不是原始源代码.

关于包含声明性代码的头文件的例外情况是它们在宏中包含内联代码或可执行代码.但是,如果应用程序明确调用此类代码,则仅占用应用程序中的空间.

链接库代码时,只链接应用程序代码中引用所需的那些库对象代码组件,而不是整个库(除非整个库仅由单个目标文件组成).