嵌入式系统头部功能
我是嵌入式系统的新手,想了解更多信息,
我目前正在优化一个软件,关于ARM嵌入式系统的封装,并且想知道,你在源文件中包含的头文件。 他们放在哪里?
现在我只是使用软件(OVP)来模拟ARM硬件平台,但在真正的硬件中,您必须将头文件放在正确的位置? 就像在gcc上的高清标准库一样。 我们是否也必须将这个库插入到嵌入式机器中? 空间有限! 有什么办法可以最小化图书馆的大小? 谢谢!
例
#include <stdio.h>
#include <stdlib.h>
我正在使用交叉编译器arm-elf-gcc
最好的祝福
吉古先生
您似乎对编译的可执行代码有一些根本性的误解。 以下内容适用于嵌入式和桌面系统。
头文件不超过任何其他源文件。 不同之处在于它们被预处理器插入到编译单元中,而不是直接编译。 同样在大多数情况下,它们只包含声明性语句,并且通常不会对可执行指令或存储数据意义上的生成代码作出贡献。
在运行时,您的源代码不需要存在于目标上; 编译器的工作是从源代码生成本机可执行的机器代码。 这是存储在目标上的机器代码。
头文件与库不同。 它只是(通常)库内容的声明(函数原型和其他符号声明,如常量,数据,宏,枚举)。 该库采用存储在组合存档中的预编译/汇编目标代码的形式。 链接器的工作是将所需的库代码与编译自己的源代码时生成的对象代码结合起来。 正是这个链接的可执行文件存储并在目标上执行,而不是原始的源代码。
关于仅包含声明性代码的头文件的例外情况是,它们包含宏中的内嵌代码或可执行代码。 但是,如果应用程序明确调用,则这些代码只占用应用程序中的空间。
链接库代码时,只链接解析应用程序代码中引用的库对象代码组件,而不链接整个库(除非整个库仅由单个对象文件组成)。
该库确实必须包含在被嵌入到嵌入式系统内存中的映像中。 通常你会告诉链接器去掉未使用的函数,这对保存内存有很大的帮助。 但是这个内存是你的程序在闪存中使用的内存,或者你用于非易失性代码存储的内存。 它没有提到你的程序在运行时需要多少内存。 您还可以告诉编译器优化空间,并使用不同的运行时库 - 供应商提供的库通常不会像它们那样快或小。
链接地址: http://www.djcxy.com/p/86919.html