C语言和Mac OSX

3
我想知道是否有人能帮助我更好地理解OSX和C之间的关系。 Xcode中有一些与C ++相关的开发者信息,但没有针对C的信息。
我认为一个基本的区别是osx使用libc而不是glibc。 有人可以指向libc文档吗? 我似乎找不到任何东西。
我看过usr / includes文件夹,但这只会让我想知道在哪里可以获取解释所有选项的参考。 例如,我刚刚发现。 那很好,但有没有文档? 还是我需要搜寻includes文件夹?

大多数C库在其核心方面都相似,偶尔会有一些众所周知的怪癖。我相信一旦你安装了Xcode,你就会在命令行上拥有一个编译器,并且还有一套有用的参考页面供man命令阅读 - 例如,输入man printf看看会发生什么。 - undefined
7
您的问题不太清楚。C是OS X支持开发的语言之一。OS X提供了完整的C标准库以及许多其他C库。标准库既有C标准文档,也有man页文档。"libc"只是C标准库的通用名称。"glibc"是该库的一个特定实现,而Apple在OS X中使用自己的实现,它是libSystem库的一部分。 - undefined
1
OS X在其核心是一个BSD Unix的派生版本。有很多标准的C参考资料可供使用,你可以使用类似于《Unix环境高级编程》这样的书籍来学习Unix相关内容,同时也可以查阅man手册。对于所有的Cocoa部分,苹果公司提供了大量的文档。在usr/include文件夹中瞎翻是一种相当低效的方式,并且其中有很多东西你不应该直接使用。 - undefined
谢谢大家!我很感激你们的耐心。@StephenCanon,我在哪里可以找到关于那些额外的C库的信息? PaulGriffiths,我刚买了一本《Unix环境高级编程》,我会去看看那本书。 - undefined
2个回答

4
似乎您在询问OSX作为程序员提供给您的功能是否与其他*nix系统部分不同,重点关注OSX实现的C标准库为您提供的功能。
请记住,虽然C标准库是利用操作系统内核提供的功能的一种常见方法,但它并不是唯一的方法。您可以使用其他低级库或自己编写低级函数。
话虽如此,请考虑以下内容:
OSX,像许多其他*nix系统一样,“基本上符合POSIX标准”。这意味着它特定的C标准库实现可能会公开POSIX标准定义的头文件。这是您可以依赖的东西,无论您使用libcglibc还是C标准库的其他实现。
根据您使用的特定C标准库,它可能会带有附加功能,例如BSD libc - 我们将其称为“POSIX标准库的超集”。虽然它可能包含与BSD(因此也是OSX)特定的实现相关的内容,但它主要似乎包含可以在任何操作系统中实现的内容。例如,您提到的sys/tree.h头文件是“红黑树和Splay树的实现” - 绝不是Linux系统无法实现的内容!
总之:
  • OSX自带一个名为BSD libc的C标准库实现,它在POSIX标准定义的基础上提供了一些额外的头文件。
  • OSX使用的XNU内核和其他*nix内核之间的功能差异不一定体现在C标准库实现的差异中。如果你想知道XNU内核能为你做什么,而Linux内核不能,那么应该从内核本身开始了解。

因此,你的问题可以分成以下两个部分:

  • glibcBSD libc之间有何差异?

以及

  • XNU内核和Linux内核之间有何差异?

0

有点不太清楚你在问什么。

OS X是基于FreeBSD的,它是一个符合POSIX标准的UNIX操作系统。OS X和C之间的关系是,C是你可以用来开发该平台的众多编程语言之一(C是Objective-C的核心,这是一种苹果公司推崇但很少使用的语言)。

OS X不使用libc。作为苹果开发者工具包的一部分,用于OS X的编译器clang使用了libc。这是有区别的。如果你想使用glib,可以从Homebrew或Macports获取GCC,并使用它来编译你的程序,而不是使用clang。

最后,你找不到libc的文档,因为所有的C库,如libc、glibc等,只要符合标准,它们提供的函数集都是相同的。在不同的C库之间,用户端的差异往往很小;所以,如果你想了解一个头文件,可以使用man命令,比如:man clang来阅读clang的文档。

希望对你有所帮助。


感谢 @SevenBits,这很有帮助。我想我所指的是OSX的实现细节以及它们与其他C库的区别。我的工作假设是这些差异将在系统独有的man页目录中列出。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接