Error "fatal error: 'sys/sysmacros.h' file not found"

Error "fatal error: 'sys/sysmacros.h' file not found"

我在 macOS v11 (Big Sur) with the standard Clang 编译器(版本 13.0.0)上遇到编译错误。

我正在尝试包含 sys/sysmacros.h 以使用 makedev() 函数,令人惊讶的是 is mentioned 在 Apple 开发者网站上并且应该与 macOS 15.5+ 兼容。

包括 sys/types.h 也会给我一个错误,但是 sys/stat.h 有效。可悲的是,它仍然没有给我我需要的 makedev()、major() 和 minor() 函数。

makedev 的 Linux 手册页指出 glibc 库有一些变化,但据我所知,macOS 不使用 glibc 库。

应该有一种使用 Homebrew (brew) as described here, but I get the same error as was mentioned in this question 在 macOS 上安装 glibc 的简单方法。所以显然目前没有合适的方法来做,然后我不确定这是否能解决我的问题。

有解决办法吗?

makedev定义在sys/types.h中。只需将 #include <sys/types.h> 添加到您的文件中。 sys/types.h是Kernel.framework的头文件。您应该在 Clang 调用中设置它,例如 clang -framework Kernel ....

您还可以按照在 sys/types.h:

中定义的方式定义这些宏
#define major(x)        ((int32_t)(((u_int32_t)(x) >> 24) & 0xff))
#define minor(x)        ((int32_t)((x) & 0xffffff))
#define makedev(x, y)    ((dev_t)(((x) << 24) | (y)))