13.14.适用架构考量
13.14.1. 关于架构的一般说明
除了众所周知的基于 x86 的处理器之外, FreeBSD 还可以在更多的处理器架构上运行。某些 port 有专门针对这些架构的限制。
对于支持的架构列表, 请运行。
这些值会以 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_ARCHS
和NOT_FOR_ARCHS
。例子。
可以用 ONLY_FOR_ARCHS_REASON
和 NOT_FOR_ARCHS_REASON
设置一个自定义的 IGNORE
信息。 使用 ONLY_FOR_ARCHS_REASON_ARCH
和 NOT_FOR_ARCHS_REASON_ARCH
可以设置每个架构条目。
如果一个 port 能够获取 i386 二进制文件并进行安装, 则应设置
IA32_BINARY_PORT
。如果设置了这个变量, /usr/lib32 就必须有 IA32 版本的库, 而且内核必须支持 IA32 兼容性。 如果这两个依赖关系中的一个没有得到满足,将自动设置IGNORE
。
13.14.4. 集群特有的考虑因素
一些 port 试图通过在编译器中指定 -march=native
来调整自己, 以适应它们所处的机器。 这应该被避免: 要么把它列在 off-by-default 选项下, 要么完全删除它。
否则,由构建集群产生的默认包可能无法在该 ARCH
的每一台机器上运行。
最后更新于