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但不推荐使用
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