我使用函数statfs64从macOS上的路径通过属性f_mntonname获得挂载点。当为体系结构x86_64构建SDK10.x时,这很好。
但是,在构建arm64 (和SDK 11)时,该方法不可用。
我可以使用statfs作为后备,这似乎是可用的,但这对路径长度有限制。
我知道有NSFileManager-API (attributesOfFileSystemForPath),但不幸的是,挂载路径没有属性。
有人知道如何在新的SDK/平台上这样做吗?
谢谢和问候,多明尼克
发布于 2021-02-03 16:16:14
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切片确实需要支持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支持。
https://stackoverflow.com/questions/66030122
复制相似问题