从源代码到可运行的操作系统(前置知识)
API 与 SDK
以 C 语言编写的操作系统为背景进行介绍,EOS 是由 C 语言编写的
操作系统和应用程序之间一个重要的纽带就是应用程序接口(简称 API)。操作系统通过开放 API 为应 > 用程序提供服务,应用程序通过使用这些 API 实现其功能。在操作系统或应用程序运行时,API 可能只是
一个简单的调用和被调用的关系。但是在编写操作系统的源代码时,必须要解决如何才能开放 API 的问题;
在编写应用程序的源代码时,又必须要解决如何才能使用 API 的问题。
SDK 是 Software Development Kit 的缩写,翻译成中文就是“软件开发工具包”。操作系统通过向开发者提供 SDK 来开放其 API,开发者在为操作系统编写应用程序时,通过使用 SDK 来调用 API。所以,如果要为操作系统开发应用程序,就需要首先获得操作系统的 SDK。
SDK:一般采用文件的形式并结合特定的编程语言向开发者提供操作系统的 API。有些 SDK 还会提供相关的文档、编程范例和工具软件等。SDK 为了向开发者提供操作系统的 API,往往会包含头文件、导入库文件和动态链接库文件。
头文件
以特定编程语言(C、C++等)编写的文本文件,通常使用.H 做为后缀名。头文件的主要作用是导出操作系统使用的一些数据类型(例如操作系统中使用的结构体类型)和 API 函数的声明。
导入库文件
是根据操作系统需要导出的 API 函数而生成的特定格式的二进制文件。
导入库文件在 Linux 中的后缀名是.A,在 Windows 中的后缀名是.LIB。导入库文件的主要作用是告诉应用程序的可执行文件,其调用的 API 函数在操作系统中的地址。导入库文件一般会被放在 SDK 中的 Lib(Library)
动态链接库文件
包含了操作系统导出的 API 函数的可执行代码的二进制文件。例如 Windows 导出的 API 函数主要保存在 kernel32.dll、user32.dll 和 gdi32.dll 三个文件中。动态链接库文件在 Linux 中的后缀名是.SO,在 Windows 中的后缀名是.DLL。动态链接库文件的格式一般与可执行文件是相同的,只是不能直接执行。应用程序的可执行文件在执行时必须依赖这些动态链接库文件,因为其调用的系统 API 函数的可执行代码都保存在这些文件中。动态链接库文件一般会被放在 SDK 中的 Bin(Binary)文件夹中。Windows 提供的 SDK 中之所以没有包含动态链接库文件,是因为在 Windows 的系统目录中已经存在这些文件了。
EOS 操作系统内核从源代码变为可以在虚拟机上运行的过程
标签:11,总结,操作系统,文件,应用程序,API,动态链接库,SDK From: https://www.cnblogs.com/lmyy/p/17831360.html