使用automake进行交叉编译时有什么重要意义?

时间:2014-01-07 07:40:39

标签: compilation compiler-errors cross-compiling configure autoconf

这可能不容易简单回答,但我不认为它是开放式的:当使用automakeconfigure交叉编译库时,应该是什么我需要避免的最重要的事情'工具链泄漏'?

这是一些背景......

首先,此处定义了工具链泄漏:http://landley.net/writing/docs/cross-compiling.html

我使用工具链从源代码编译libuuid,该工具链用于交叉编译将在基于自定义debian的系统上运行的代码。该项目的目标是使用工具链编译代码(包括我的应用所依赖的第三方库),以便编译是主机的独立

到目前为止,我已经尝试提供我的工具链gcc编译器看起来没问题,但是当我运行./configure时,它会检查很多内容,而我&# 39;我不知道如何判断哪些真正重要,而且我不确定如何只检查我的工具链并忽略主机系统上的任何内容。以下是一些例子:

在这里你可以看到./configure对我的工具链编译器感到满意:

checking whether we are using the GNU C compiler... yes
checking whether <toolchain>/bin/i686-linux-gcc accepts -g... yes

然后很快就可以看到它在我的主机系统上发现grep,这似乎是一个工具链泄漏&#39;

checking for grep that handles long lines and -e... /bin/grep

然后在它上面搜索主机系统的一些标题。我想我可以指定它的外观,但我仍然不知道需要哪些标题:

checking for linux/compiler.h... no
checking for linux/blkpg.h... yes
checking for linux/major.h... yes
checking asm/io.h usability... no
<...>

1 个答案:

答案 0 :(得分:1)

  

然后不久你就可以看到它在我的主机系统上发现了grep,这似乎是“工具链泄漏”

我不会称之为“工具链泄漏”,引用的文章也没有。它确实提到这些事情是“泄密”:

  • 来自autoconf --build系统的不正确的标头文件(在文章和帖子中称为“主机”)。
  • 来自--build系统
  • 的不正确的库

我认为我使用过的任何工具链都没有自己的grep可执行文件。它有什么不同的做法?

话虽如此,它不应该使用--buildlinux标头。通常工具链都有它自己的副本。这将是一次“泄密”。

  

我正在使用工具链从源代码编译libuuid,该工具链是为在基于debian的自定义系统上运行的交叉编译代码而制作的。该项目的目标是使用工具链编译代码(包括我的应用所依赖的第三方库),以便编译独立于主机。

它将是这样的:使用工具链编译依赖项并将其安装在工具链/usr/lib中(或者您计划保留交叉编译库的地方,如果您不想弄乱您的工具链)。使用工具链编译libuuid(当然,引用依赖项)。