Skip to content

编译器选项:-arch


设置目标架构以改进/限制代码生成或进行交叉编译

语法

-arch <architecture>

参数

architecture

目标架构。可识别的值:

  • 与 32位 x86 相关:
  • 与 64位 x86_64 相关:
  • 与 32位 ARM 相关:
  • 与 64位 ARM(AArch64)相关:
  • 与 32位 PowerPC 相关:
  • 与 64位 PowerPC 相关:
  • 其他:

描述

-arch 编译器选项设置目标 CPU 架构。可用于多种用途:

  • 改进代码生成;例如:可以使用 -arch pentium4-sse3 覆盖默认的 -arch 686,编译器在某些情况下会生成更快的代码,使用 i686 上不可用的某些指令。
  • 限制代码生成;例如:可以使用 -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,或从 32位 PowerPC 到 64位 PowerPC),而 -arch 32 不执行任何操作。在 64位系统上,情况相反:-arch 32 交叉编译到默认 32位架构,而 -arch 64 不执行任何操作。

-arch native 快捷方式类似于 gcc 的 -march=native 选项。在 x86 上,它使 fbc 尝试根据 cpuid 指令及其可用性或结果自动检测主机 CPU。在其他架构上,这将简单地使用编译器本身所构建的架构。在 -gen gcc 下,这将使用 gcc -march=native

指定与本机架构不兼容的 -arch 设置将触发交叉编译,就像 -target 选项一样,但只有目标架构会改变,目标操作系统不会改变。

版本

  • 在 fbc 1.10.0 之前,32位 x86 的默认值为 486。

另请参阅

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系