macOS SDK11/ARM64:statfs64/f_mntonname
macOS SDK11 / ARM64: statfs64 / f_mntonname
我正在使用函数 statfs64
通过 属性 f_mntonname
从 macOS 上的路径获取挂载点。
这在针对架构 x86_64.
的 SDK 10.x 构建时工作正常
但是,在为 arm64(和 SDK 11)构建时,该方法不可用。
我可以使用 statfs
作为备用,这似乎可用,但这对路径长度有限制。
我知道有 NSFileManager
-API (attributesOfFileSystemForPath
),但不幸的是没有 属性 挂载路径。
有谁知道如何在新 SDK/Platform 上执行此操作?
谢谢你和问候,
多米尼克
statfs64
和 fstatfs64
自 macOS 10.6 以来已弃用,取而代之的是“版本化符号”。
如果您正在为 macOS 10.6 或更高版本构建,只需切换到 statfs
和 fstatfs
,并将其添加到源文件的顶部(包含之前):
#define _DARWIN_USE_64_BIT_INODE
或者添加一个编译器标志,如果更改很多源文件太繁琐:
-D_DARWIN_USE_64_BIT_INODE
对于 arm64 目标,这已经设置,所以它没有效果。
对于 x86_64 目标,这会导致链接器发出对 _statfs$INODE64
(相当于 _statfs64
)而不是 _statfs
.
的依赖
如果您的 x86_64 slice 确实需要支持 macOS 10.5,那么您将不得不求助于一些预处理:
#define _DARWIN_USE_64_BIT_INODE
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060
#define STATFS statfs64
#define FSTATFS fstatfs64
#else
#define STATFS statfs
#define FSTATFS fstatfs
#endif
而且,如果您需要支持 macOS 10.4 或更低版本,无论如何您都不走运,因为那里没有 64 位 inode 支持。
我正在使用函数 statfs64
通过 属性 f_mntonname
从 macOS 上的路径获取挂载点。
这在针对架构 x86_64.
但是,在为 arm64(和 SDK 11)构建时,该方法不可用。
我可以使用 statfs
作为备用,这似乎可用,但这对路径长度有限制。
我知道有 NSFileManager
-API (attributesOfFileSystemForPath
),但不幸的是没有 属性 挂载路径。
有谁知道如何在新 SDK/Platform 上执行此操作?
谢谢你和问候, 多米尼克
statfs64
和 fstatfs64
自 macOS 10.6 以来已弃用,取而代之的是“版本化符号”。
如果您正在为 macOS 10.6 或更高版本构建,只需切换到 statfs
和 fstatfs
,并将其添加到源文件的顶部(包含之前):
#define _DARWIN_USE_64_BIT_INODE
或者添加一个编译器标志,如果更改很多源文件太繁琐:
-D_DARWIN_USE_64_BIT_INODE
对于 arm64 目标,这已经设置,所以它没有效果。
对于 x86_64 目标,这会导致链接器发出对 _statfs$INODE64
(相当于 _statfs64
)而不是 _statfs
.
如果您的 x86_64 slice 确实需要支持 macOS 10.5,那么您将不得不求助于一些预处理:
#define _DARWIN_USE_64_BIT_INODE
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060
#define STATFS statfs64
#define FSTATFS fstatfs64
#else
#define STATFS statfs
#define FSTATFS fstatfs
#endif
而且,如果您需要支持 macOS 10.4 或更低版本,无论如何您都不走运,因为那里没有 64 位 inode 支持。