从源代码编译:配置脚本“build”有哪些选项?

从源代码编译:配置脚本“build”有哪些选项?

当我运行如下行时:

./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu {*shortened*} \
--with-imap-ssl=/usr/include/openssl/ --enable-ftp --enable-mbstring --enable-zip

我理解“x86_64-redhat-linux-gnu”的描述性含义,但我有疑问?

1)是否有所有选择的列表?在每个配置脚本中或在互联网上。

2)使答案更具体或更笼统对结果有很大影响吗?

谢谢。

答案1

脚本的--build-host选项configure是标准配置选项,除非您正在进行交叉构建(即在一个系统上构建一个包以在不同的系统上运行),否则您很少需要指定它们。这些选项的值称为“三元组”,因为它们的形式为cpu-vendor-os。 (有时,就像你的情况一样,os实际上是kernel-os,但它仍然被称为三元组。)

基本配置脚本非常有能力推断主机三元组,并且您应该让它这样做,除非您有一些非常好的证据表明结果不正确。执行此操作的脚本称为config.guess,您可以在构建包中的某个位置找到它(可能位于build-aux子目录中)。如果您正在进行交叉构建并且需要了解三元host组,那么首先要尝试的是config-guess在主机系统上运行。

--host为和提供(或猜测)的值--build通过另一个名为 的脚本传递config.sub,该脚本将标准化这些值。 (根据 autoconf 文档,如果config.sub不存在,您可以假设构建不关心主机三元组。)特定软件包的开发人员可能会根据config.sub其构建的特定需求自定义脚本,并且有标准脚本有许多不同版本config.sub,因此您不应期望config.sub一个软件包可以在另一个软件包上运行,甚至不能在同一软件包的不同版本上运行。

尽管有上述所有内容,自动配置的软件包实际上不需要知道主机操作系统和供应商的名称,除了识别默认文件系统布局以便它们提供正确的默认文件位置之外。

您可以通读config.sub以了解将被识别的选项范围,但要弄清楚如何使用这些值,或者即使使用这些值,也不是那么容易。第一个字段——cpu——是最有可能被使用的。

您可以通过键入以下内容获取所有选项的列表:

./configure --help

或更好,

./configure --help | less

因为总是有很多选择。

除了标准选项(--build--host以及--target如上所述,以及覆盖文件位置的选项)之外,每个配置脚本允许的特定选项都不同。由于它们也往往会随着软件包的版本而变化,因此您应该始终检查配置脚本本身,而不是依赖外部文档。

不幸的是,配置脚本的帮助内容并不总是 100% 完整,因为它们依赖于包开发人员来维护它们。有时,异常或仅限开发人员的选项不是输出的一部分./configure --help,但这通常表明该选项不应在正常安装中使用。

相关内容