C语言和Mac OSX

时间:2014-10-24 23:29:20

标签: c macos

我想知道这里的任何人是否可以帮助我更好地理解OSX和C之间的关系。在xcode中有一些与C ++相关的开发人员信息,但对C来说却没有。

我认为一个根本区别是osx使用libc而不是glibc。任何人都能指出我的libc文档吗?我似乎找不到任何东西。

我已经看过usr / includes文件夹,但所有这一切让我想知道我在哪里可以获得一个参考,阐明了我可以使用的所有选项。例如,我刚发现<tree.h>。这一切都很好,但有没有任何文件?或者我是否需要搜索包含文件夹?

2 个答案:

答案 0 :(得分:0)

有点不清楚你在问什么。

OS X基于FreeBSD,它是一个兼容POSIX的UNIX操作系统。 OS X和C之间的关系是C是许多编程语言中的一种,您可以编写这些语言来为平台开发(C是Objective-C的核心,这是Apple所支持的未使用的语言)。

OS X 不使用libc。 clang是作为Apple OS X开发人员工具包的一部分提供的编译器,它使用libc。有区别。如果你想使用glib,从Homebrew或Macports中获取GCC并用它来编译你的程序而不是clang。

最后,您找不到libc的文档,因为所有C库(如libc,glibc等)都提供相同的功能集(如果它们符合标准)。在不同的C库之间,最终用户之间的差异往往很小;因此,如果您想了解一个头文件,请使用man,例如:man clang来阅读clang文档。

希望这有帮助。

答案 1 :(得分:0)

您似乎在询问OSX作为程序员提供给您的功能是否与其他* nix系统有所不同;专注于OSX实施C标准库为您提供的功能。

现在请记住,虽然C标准库是利用操作系统内核公开的功能的一种非常常见的方式,但它并不是唯一的方法。您可以使用其他低级库,也可以自己编写低级函数。

话虽如此,请考虑以下事项:

  • 与许多其他* nix系统一样,OSX“主要与POSIX兼容”。这意味着其特定的C标准库实现可能会暴露headers defined by the POSIX standard。无论您使用libcglibc还是使用C标准库的其他实现,这都是您可以信赖的内容。
  • 根据您使用的特定C标准库,它可能附带其他功能,例如BSD libc - 我们称之为“POSIX标准库的超集”。虽然它可以包含特定于BSD(以及OSX)的东西的实现,但它似乎包含可以实现的东西,而不管操作系统的风格如何。例如,您提到的sys/tree.h标题是“红黑树和Splay树的实现” - 绝不是Linux系统上无法实现的东西!

总结一下:

  • OSX附带了一个名为BSD libc的C标准库实现,它在POSIX标准定义的基础上提供了一些额外的标题。
  • {C}标准库实现之间的差异不一定会捕获XNU kernel used by OSX和其他* nix内核之间的功能差异。如果你想知道XNU内核可以为你做什么,Linux内核不能,那么从一开始就是内核本身。

所以您的问题可以分为:

  • glibcBSD libc之间的区别是什么?

  • XNU内核与Linux内核有什么区别?