autotools - 交叉编译和构建本机中间构建程序

时间:2017-04-27 08:43:21

标签: cross-compiling autotools

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

我已经找到了这个帖子this thread,但是第一个提出的解决方案不起作用,而第二个解决方案对项目结构的影响很大。

有人可以给我一个如何解决这个问题的提示吗?也许告诉我哪些AC / AM宏可以完成工作,或者从哪里获得一个很好的例子。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

相关问题