/ usr / include中的mach头与SDK中的头符号有什么区别?

时间:2018-02-06 21:02:48

标签: macos mach

在MacOS X中,有一个Mach内核头文件位于

  • /usr/include/mach
  • /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/mach

这些标题不匹配:它们提供不同的API(函数,类型等)。

  • 他们之间有什么区别?
  • 我什么时候应该使用哪个?

2 个答案:

答案 0 :(得分:2)

  

他们之间有什么区别:

首先是usr文件夹的一些上下文:

/ usr

包含非必要的命令行二进制文件,库,头文件和其他非系统关键数据(表示系统可以在不需要这些文件的情况下重新启动)。此文件夹是特定于UNIX的目录,已由OS X继承。

/ usr / include

编译用户空间源代码所需的“头文件”目录。

在终端输入man hier,这将为您提供文件系统层次结构和每个目录的描述。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

更新版本的Xcode不再使用“/ usr / include /”中的标题。相反,Xcode使用嵌入其软件包的SDK中的标头。

  

为什么他们不同?

这是因为它们几乎肯定是不同的版本,都来自不同的安装源,所以它们相同的可能性极小。

  

我什么时候应该使用哪个?

这个答案确实取决于你想要做什么?

如果您使用Xcode进行开发,则应使用Xcode包SDK;否则,如果您在Xcode之外进行开发,则应使用/ usr / include /。

来源:

Linux Exploring the File System

Linux Filesystem Hierarchy

Apple File System Basics

答案 1 :(得分:2)

来自Apple's documentation for the Kernel framework

  

内核框架为内核驻留设备驱动程序和其他内核扩展提供API和支持。

如果这不是您正在编程的内容,那么您就不应该使用它(包括来自它的头文件)。