当我通过编译器标志 -mmacosx-version-min=10.5
, 这是什么意思?我认为这意味着结果二进制是 x86,而不是 ppc,但它是 32 位还是 64 位?我在雪豹上编译,所以默认输出二进制是 64 位。我没有路过-universal
,我认为它不是 32 位-64 位通用二进制文件。
最佳答案
此选项将由放置在标题中的各种可用性宏使用。这意味着您可能需要最低版本的操作系统,即使您有更新的 SDK(即使用 10.6 SDK 定位 10.5)。在以 10.5 为目标时使用 10.6 API 将触发警告,并且该 API 将与weak_import 属性链接。
大多数 Apple 的 API header 都包含每个类、方法、函数或枚举的可用性宏,以便为每个类声明:
宏看起来像:
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
至于架构,它只取决于 SDK 二进制文件中可用的架构。例如,对于 10.5 SDK,您可以针对四种架构(Intel/32bits、PowerPC/32bits、Intel/64bits、PowerPC 64bits),而对于 10.6 SDK,您只能针对三种架构(Intel/32bits、PowerPC/32bits、英特尔/64 位)。
当您使用 Snow Leopard 时,您可以非常简单地通过传递这样的架构选项来定位 i386(Intel/32bits)、ppc(PowerPC/32bits)或 x86_64(Intel/64bits):
gcc -arch i386
或者像这样(对于基于配置的项目):
CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure
关于macos - macosx-version-min 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923502/