Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
macosx版本min意味着什么?_Macos_G++_32bit 64bit - Fatal编程技术网

macosx版本min意味着什么?

macosx版本min意味着什么?,macos,g++,32bit-64bit,Macos,G++,32bit 64bit,当我传递编译器标志-mmacosx version min=10.5时,它是什么意思?我认为这意味着结果二进制是x86,不是ppc,但它是32位还是64位?我在雪豹上编译,所以默认输出二进制是64位。我没有传递-universal,我想它不是32位-64位通用二进制 它会触发Mac OS X 10.5之后出现的方法的编译器警告。Is与体系结构无关。此选项将由放置在标头中的各种可用性宏使用。这意味着您可以要求最低版本的操作系统,即使您有较新的SDK(即目标10.5和10.6 SDK)。以10.5为

当我传递编译器标志
-mmacosx version min=10.5
时,它是什么意思?我认为这意味着结果二进制是x86,不是ppc,但它是32位还是64位?我在雪豹上编译,所以默认输出二进制是64位。我没有传递
-universal
,我想它不是32位-64位通用二进制

它会触发Mac OS X 10.5之后出现的方法的编译器警告。Is与体系结构无关。

此选项将由放置在标头中的各种可用性宏使用。这意味着您可以要求最低版本的操作系统,即使您有较新的SDK(即目标10.5和10.6 SDK)。以10.5为目标时使用10.6 API将触发警告,该API将与弱_导入属性链接

大多数Apple的API头包含每个类、方法、函数或枚举的可用性宏,以便为每个类、方法、函数或枚举声明:

  • 支持的最低操作系统
  • 抨击
  • 不可用
宏看起来像:

  • 可用\u MAC\u OS\u X\u版本\u 10\u 2\u和\u更高版本
  • 可用\u MAC\u OS\u X\u版本\u 10\u 2\u和\u更高版本\u但不推荐使用
至于架构,它只取决于SDK二进制文件中可用的架构。例如,对于10.5 SDK,可以针对四种体系结构(Intel/32位、PowerPC/32位、Intel/64位、PowerPC 64位),而对于10.6 SDK,只能针对三种体系结构(Intel/32位、PowerPC/32位、Intel/64位)

使用Snow Leopard时,您可以非常简单地将i386(Intel/32位)、ppc(PowerPC/32位)或x86_64(Intel/64位)作为目标,只需传递如下架构选项:

gcc -arch i386
或类似于此(对于基于配置的项目):


根据我的测试,将此选项传递到链接步骤(如-arch)也很重要;因此,它不仅仅影响宏/预处理(从其他答案可以推断)


当编译成步骤但未传递到链接步骤时,发现10.6构建的共享库不会加载到10.5以下。

<代码> -MMACOSX版本min =…<代码>也影响C++ STL实现(GNU或LLVM)的默认选择,在这方面,这对编译器和链接器同样重要。

我必须包含这些宏,以获得纯C格式的宏。但可用。h也包含在stdlib.hSee中,也包含在下面@Kristian的答案中。此外,我发现最小值等于10.8以上的符号会产生稍微不同的符号(代码< >开始>代码>符号的链接已经改变,可能与新的默认C++库一致)。这对于小牛来说尤其重要,默认的C++ STL库改变了。
CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure