何时/如何指定configure / make目标

时间:2013-03-08 11:32:54

标签: makefile cross-compiling configure

各种各样的开源项目都是在源代码中分发的,并且应该使用./configure && make方法进行编译。但是,如果我想进行交叉编译,那么在这两个步骤中我应该告诉他们我想要什么样的目标平台?

是否与configure / make有关,或者这是否适用于每个项目?什么可以是编译某些项目,库或控制台应用程序并指定目标的示例?

我知道很多项目的网站上都有一个专门用于“交叉编译此程序”的网页。所以它似乎是项目特定的设置。但是该项目仍然使用configure / make,那么所有这些的关系是什么?

1 个答案:

答案 0 :(得分:4)

如果您的系统使用的是标准GNU autoconf,那么您始终可以在配置时定义交叉编译,而不是在生成时。如果配置脚本不知道您正在进行交叉编译,那么当它探测系统寻找支持的内容和不支持的内容时,可能会得到错误的答案。

交叉编译是要配置的--build, - hosts和--target标志的用途。你永远不需要设置--build:它总是指你正在运行configure的系统,而configure可以自己解决这个问题。对于正常的交叉编译,您也不要设置--host,并且将--target设置为交叉编译目标。如果需要,您可能还需要设置CC(对于C程序)和/或CXX(对于C ++程序),LD,AR,STRIP和其他一些程序。我个人也喜欢构建一个单独的目录,虽然有些软件包不支持它:)

tar xzf foo-1.1.tar.gz
mkdir obj
cd obj
../foo-1.1/configure --target=... CC=...-gcc CXX=...-g++ ...
make

请注意,这一切都是由基本的autoconf / automake提供的,所以所有项目都会以相同的方式完成(虽然根据我的经验,许多项目不会经常尝试交叉编译,但做错了以致它不起作用很好)。