在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(函数,类型等)。
答案 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 /。
来源:
答案 1 :(得分:2)
来自Apple's documentation for the Kernel framework:
内核框架为内核驻留设备驱动程序和其他内核扩展提供API和支持。
如果这不是您正在编程的内容,那么您就不应该使用它(包括来自它的头文件)。