13.14.适用架构考量

13.14.1. 关于架构的一般说明

除了众所周知的基于 x86 的处理器之外, FreeBSD 还可以在更多的处理器架构上运行。某些 port 有专门针对这些架构的限制。

对于支持的架构列表, 请运行。

cd ${SRCDIR}; make targets

这些值会以 TARGET/TARGET_ARCH 的形式显示。 ports 的只读 Makevar ARCH 会根据 TARGET_ARCH 的值来设置。 port 的 Makefile 应测试这个 Makevar 的值。

13.14.2. 将一个 port 标记为架构中立

没有任何与架构相关的文件或需求的 port, 可以通过设置 NO_ARCH=yes 来识别。

NO_ARCH 是指不需要为每一个支持的体系结构建立一个包。我们的目标是减少用于构建和分发软件包的资源,例如网络带宽和镜像及分发介质上的磁盘空间。然而,目前我们的软件包基础设施(例如,软件包管理器、镜像和软件包生成器)还没有设置好,无法完全从NO_ARCH 中获益。

13.14.3. 将一个 port 标记为仅在某些架构上被忽略

  • 要将一个 port 标记为仅在某些架构上被忽略, 还有两个方便的变量会自动设置 IGNORE: ONLY_FOR_ARCHSNOT_FOR_ARCHS。例子。

ONLY_FOR_ARCHS= i386 amd64
NOT_FOR_ARCHS= ia64 sparc64

可以用 ONLY_FOR_ARCHS_REASONNOT_FOR_ARCHS_REASON 设置一个自定义的 IGNORE 信息。 使用 ONLY_FOR_ARCHS_REASON_ARCHNOT_FOR_ARCHS_REASON_ARCH 可以设置每个架构条目。

  • 如果一个 port 能够获取 i386 二进制文件并进行安装, 则应设置 IA32_BINARY_PORT。如果设置了这个变量, /usr/lib32 就必须有 IA32 版本的库, 而且内核必须支持 IA32 兼容性。 如果这两个依赖关系中的一个没有得到满足,将自动设置 IGNORE

13.14.4. 集群特有的考虑因素

一些 port 试图通过在编译器中指定 -march=native 来调整自己, 以适应它们所处的机器。 这应该被避免: 要么把它列在 off-by-default 选项下, 要么完全删除它。

否则,由构建集群产生的默认包可能无法在该 ARCH 的每一台机器上运行。

最后更新于

FreeBSD 中文社区