Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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
Ios 什么';这两者之间的区别是什么;“建筑”;及;“有效架构”;在Xcode构建设置中?_Ios_Xcode_Xcode4.5 - Fatal编程技术网

Ios 什么';这两者之间的区别是什么;“建筑”;及;“有效架构”;在Xcode构建设置中?

Ios 什么';这两者之间的区别是什么;“建筑”;及;“有效架构”;在Xcode构建设置中?,ios,xcode,xcode4.5,Ios,Xcode,Xcode4.5,它们的含义是什么?我可以将它们设置为不同的值吗?体系结构是您想要构建的体系结构,有效的体系结构是您可以设想使用代码库构建的体系结构 因此,您可能只想为armv7s构建二进制代码,但同样的源代码可以为armv7和armv6编译。所以VALID\u ARCHS=armv6 armv7 armv7s,但是您设置了ARCHS=armv7s,因为这就是您实际想要用代码构建的全部内容 或者,在苹果ese中: 拱门(建筑) 标识符的空格分隔列表。指定二进制文件所针对的体系结构(ABI、处理器型号)。当此生成设

它们的含义是什么?我可以将它们设置为不同的值吗?

体系结构是您想要构建的体系结构,有效的体系结构是您可以设想使用代码库构建的体系结构

因此,您可能只想为armv7s构建二进制代码,但同样的源代码可以为armv7和armv6编译。所以
VALID\u ARCHS=armv6 armv7 armv7s
,但是您设置了
ARCHS=armv7s
,因为这就是您实际想要用代码构建的全部内容

或者,在苹果ese中:

拱门(建筑)

标识符的空格分隔列表。指定二进制文件所针对的体系结构(ABI、处理器型号)。当此生成设置指定多个体系结构时,生成的二进制文件可能包含每个指定体系结构的目标代码

以及:

有效架构(有效架构)

标识符的空格分隔列表。指定可为其生成二进制文件的体系结构。在构建过程中,此列表与ARCHS build设置的值相交;结果列表指定二进制文件可以运行的体系结构。如果生成的架构列表为空,则目标不会生成二进制文件

资料来源:


实际上,您可以将
VALID_ARCHS
放在一边,不必担心更改它,只需摆弄
ARCHS
即可设置您想要构建的体系结构。通常,您只需将调试版本设置为原生版本,因为您只想为将要测试/运行它的机器构建调试版本,并为您计划支持的所有体系结构发布版本。

来自Apple文档,我们知道,将要构建的二进制Xcode是与
体系结构
相交的
有效体系结构列表

因此,我认为杰里米的回答不对,正如他所说:

因此,您可能只想为armv7s构建二进制文件,但相同的源代码将
为armv7和armv6编译良好。所以
VALID\u ARCHS=armv6 armv7 armv7s
,但是 ARCHS=armv7s,因为这就是您实际想要用代码构建的全部内容

当您设置
VALID\u ARCHS=armv6 armv7 armv7s
并设置
ARCHS=armv7s
时,二进制Xcode生成的结果是armv7s,它无法与armv6/armv7兼容


如果你想与armv6/armv7/armv7s兼容,你必须设置
VALID\u ARCHS=armv6 armv7 armv7s
ARCHS=armv6
。这样,二进制Xcode生成的结果就是armv6,并且它可以在两个armv6/armv7/armv7s上正常运行,因为arm处理器是向后兼容的。

@DanMoore“结果架构列表”在生成时在内存中完成。@onmyway133大多数情况下,您不需要有效的\u arch。如果您只为某些体系结构编写内联asm,则可能会更改有效的_arch,以反映您的代码不再适用于除这些体系结构之外的任何体系结构。不过,在很大程度上,这只是Xcode给您的一个提示,指示它可以为哪些体系结构构建,您可以从中为您的Arch选择。他是对的:“因为这就是您真正想要用代码构建的全部内容。”