【问题标题】:autotools - crosscompiling and building native intermediate building programsautotools - 交叉编译和构建本地中间构建程序
【发布时间】:2017-04-27 08:43:21
【问题描述】:

我现在正致力于重组 autotools 项目 lnav 以使用 yocto 构建。这意味着 lnav 本身必须进行交叉编译,而一些帮助程序必须在本地构建。

我已经找到了这个线程this thread,但是第一个建议的解决方案不起作用,而第二个对项目结构的侵入性很大。

谁能给我一个提示如何解决这个问题?或许可以告诉我哪些 AC/AM 宏能胜任这项工作,或者在哪里可以找到一个好的示例。

【问题讨论】:

  • 我不确定我是否理解问题的本质。为什么需要在同一个构建中为不同的主机类型构建组件?助手是否仅支持构建,还是它们是软件包的可安装部分?
  • @john 是的,你是对的。这些帮助程序用于构建而不是安装在目标上。

标签: cross-compiling autotools


【解决方案1】:

如果您需要为不同的执行主机构建不同的部分,那么最简洁的方法是分别构建构建工具。您链接的其中一个答案描述了一种方法。但是,如果您有一个编写良好的 Autotools 构建系统,那么您可能能够通过利用源外构建来以不同的方式解决这个问题。这可以编写脚本。

创建一个用于构建工具的目录。在该目录中,配置构建系统 (path-to-source-dir/configure),然后构建(仅)所需的工具。然后在源目录或不同的源外构建目录中,通过将适当的--build--host 三元组指定为configure 来配置交叉编译,将已构建的工具复制或链接到构建中目录,然后执行其余的构建。

如果构建系统是特别精心设计的,那么您可能需要克服针对不同主机上构建工具的不同可执行扩展的规定。如果您需要这样做,并且您打算编写两阶段交叉编译的脚本,那么您可能可以在复制/链接工具时处理该问题;这将避免任何需要在核心构建系统中编写对它的特殊支持。

为了支持一般的交叉编译,configure.ac 应该使用AC_CANONICAL_BUILDAC_CANONICAL_HOST 宏,并且构建机器需要安装适当的交叉编译工具链。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2020-03-29
    相关资源
    最近更新 更多