【问题标题】:When/how to specify configure/make target何时/如何指定配置/制作目标
【发布时间】:2013-02-23 22:32:59
【问题描述】:

大量的开源项目以源代码形式分发,并应该使用./configure && make 方法编译。但是如果我想交叉编译,我应该在这两个步骤中的哪一个告诉他们我想要获取二进制文件的目标平台?

它是否与一般的配置/制作有关,或者这是特定于每个项目的?编译某些项目、库或控制台应用程序并指定目标的示例可能是什么?

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

【问题讨论】:

    标签: makefile cross-compiling configure


    【解决方案1】:

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

    交叉编译是要配置的--build、--host 和--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 提供的,因此所有项目都会以相同的方式执行此操作(尽管根据我的经验,许多项目不会定期尝试交叉编译,但会做一些错误以使其不起作用很好)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2012-05-02
    • 2016-07-17
    • 2017-06-06
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多