【问题标题】:What is the sense of the word "host" in 'HOSTCC' and ./configure --host?'HOSTCC' 和 ./configure --host 中的“主机”一词是什么意思?
【发布时间】:2012-01-05 05:28:59
【问题描述】:

假设我有某个程序的源代码,源代码使用 GNU 自动工具,为了简单起见,假设该程序绝不是任何类型的开发工具。如果我有一个方便的跨工具链,我可以使用--host 选项configure 为平台fooproc-barvendor-bazos 进行交叉编译:

./configure --host=fooproc-barvendor-bazos

但是,在包括 Linux 2.6 在内的各种源构建所采用的安静(er) 输出风格中,

HOSTCC foo.c

表示 foo.c 正在使用我正在构建的系统的本机编译器构建,以区别于

CC bar.c

这意味着 bar.c 正在为我正在为其构建程序的系统使用交叉编译器构建。

我是否在某处感到困惑,或者HOSTCC 中的“主机”不是指./configure --host 意义上的主机?

【问题讨论】:

  • 环顾四周,似乎 BUILD_CC / CC_FOR_BUILD 是 HOSTCC 的常见替代方案,用于指定本机编译器。

标签: cross-compiling autotools configure


【解决方案1】:

autoconf/automake 并没有主机编译器的概念。 $CC 始终是目标编译器。如果您看到$HOSTCC,它是您正在查看的包的开发人员手动添加的。

--host 指定要在哪种主机类型上运行生成的程序。

【讨论】:

  • “目标编译器”是指 --host 为配置脚本指定的平台的交叉编译器,“主机编译器”是指本机编译器吗?
  • 是的。 HOSTCC/NATIVECC(如果存在)将受 ./configure --build=xyz 的影响(而不是 --host)。
【解决方案2】:

在 autoconf 中的术语是:

  • build 是您正在编译的系统。
  • 主机是您正在构建的系统将在其上运行。
  • target 是您正在构建的编译器将为其编译的目标,与不构建编译器时无关。

在其他工具中,例如 ptxdist,术语是:

  • 主机是您正在构建的系统。
  • 目标是您正在构建的系统将在其上运行。

因此,根据您拥有的工具,host 意味着不同的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2013-03-14
    • 2011-04-12
    • 1970-01-01
    • 2018-10-29
    • 2013-09-11
    • 2020-09-17
    相关资源
    最近更新 更多