如果我正在为运行linux的嵌入式系统编写C程序,我的程序中使用的函数和库将如何不同?

时间:2013-12-20 12:16:01

标签: c embedded-linux

我试图了解当我们在微处理器/微控制器上安装linux时,我们的应用程序编写过程如何变化,即在其中运行的操作系统。据我所知,到目前为止我们看到的应用程序仍然有相同的旧stdio.h和void main。 Linux在后台做什么?我们如何让linux在启动后运行我们的应用程序? Linux在这些程序中做了什么?我的意思是我们仍然可以打开和关闭文件并写入Linux的LCD问题吗?

换句话说,裸机代码与Linux有何不同?我在某处读过我们有一个名为libc的C库。即使我们没有在后台运行linux,我们也不能使用libc吗?

1 个答案:

答案 0 :(得分:2)

C区分两种模式“独立”和“托管”:

  • 在独立环境中,你只有非常有限的一部分 可用的标准头文件,大多数标准库可能是 失踪。如果你在“裸露”上运行你的程序就是这种情况 金属“。您的特定平台可能为您提供其他部分 C库,甚至完全不同的东西。

    只保证“float.h”, “iso646.h”,“limits.h”,“stdalign.h”,“stdarg.h”,“stdbool.h”, “stddef.h”,“stdint.h”和“stdnoreturn.h”。所以“stdio.h”可能不存在。

  • 在托管环境中,您拥有C库中的所有内容 由C标准保证。在linux下面你应该至少拥有它。

  • 如果你运行linux,通常你会更有利。 Linux的 实现POSIX,因此你将在C中拥有更多的功能 图书馆可用。 POSIX的很多部分都是可选的,所以你拥有的 将再次依赖于您的平台提供商。