macOS SDK11 / ARM64: statfs64 / f_mntonname



我使用statfs64函数通过属性f_mntonname从macOS上的路径获取挂载点。在基于SDK 10进行构建时,这可以正常工作。x86_64.

但是,当为arm64(和SDK 11)构建时,该方法不可用。

我可以使用statfs作为备用,这似乎是可用的,但这对路径长度有限制。

我知道有NSFileManager-API (attributesOfFileSystemForPath),但不幸的是没有挂载路径的属性。

有人知道如何在新的SDK/平台上实现这一点吗?

谢谢你和问候。杜米尼克

statfs64fstatfs64自macOS 10.6以来已弃用,支持"版本化符号"。

如果你在macOS 10.6或更高版本上构建,只需切换到statfsfstatfs,并将此添加到源文件的顶部(在include之前):

#define _DARWIN_USE_64_BIT_INODE

或者添加一个编译器标志,如果更改许多源文件太繁琐:

-D_DARWIN_USE_64_BIT_INODE

对于arm64目标,这已经设置好了,所以没有效果。
对于x86_64目标,这会导致链接器发出对_statfs$INODE64(相当于_statfs64)而不是_statfs的依赖。

如果你的x86_64片确实需要支持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位索引节点支持。

相关内容

  • 没有找到相关文章

最新更新