设置改进/限制代码生成或交叉编译的目标架构
语法
参数
- 相关32位x86:
- 386
- 486(默认为x86)
- 586
- 686
- athlon
- athlon-xp
- athlon-fx
- k8-sse3
- pentium-mmx
- pentium2
- pentium3
- pentium4
- pentium4-sse3
- 相关64位x86_64:
- 与32位ARM相关:
- 与64位ARM(AArch64)有关:
- 其他:
- native:用于编译运行编译器的架构。
- 32,64:用于快速交叉编译到32位或64位版本的默认架构。
说明
-arch编译器选项设置目标CPU体系结构。这可以用于多种用途:
- 改进代码生成例如:您可以使用-arch 686来覆盖默认-arch 486,并且编译器在某些情况下会通过使用i486(或其他i686以上的CPU)上不可用的某些指令来生成更快的代码。
- 限制代码生成;例如:您可以使用-arch 386将编译器限制为仅使用i386兼容指令。
- 交叉编译;例如:您可以在32位x86系统上使用-arch x86_64交叉编译为64位x86_64。
-arch设置对代码生成的确切影响取决于正在使用的
代码生成后端.在某些情况下,x86 ASM后端(
-gen gas)处理
-arch设置并相应调整代码生成。当使用GCC后端(
-gen gcc)时,指定的架构将通过
gcc -march=<...>传递给gcc,导致gcc为指定的体系结构生成代码。
但是,
-arch仅影响新生成的代码,而不影响预编译代码,例如FreeBASIC运行时库或
lib/目录中的任何其他库。例如,使用
-arch 386不一定能够获得纯i386可执行文件 - 它还取决于如何编译所有要链接的库。
-arch 32和
-arch 64快捷方式与gcc的
-m32/-m64选项类似。在32位架构上,
-arch 64是交叉编译为默认64位版本架构的缩写。从32位x86到64位x86_64或32位ARM到64位AArch64),
-arch 32什么都不做。在64位系统上,相反,
-arch 32交叉编译为默认的32位架构,而
-arch 64不执行任何操作。
-arch native快捷方式类似于gcc的
-march=native选项。在x86上,它使fbc根据
cpuid指令及其可用性或结果自动尝试检测主机CPU。在其他体系结构中,目前只能使用编译器本身构建的架构。under -gen gcc这将使用
gcc -march=native.
指定与本机架构不兼容的
-arch设置将触发
交叉编译,就像
-target选项一样,只不过只有目标架构而不是目标操作系统被更改。
参考