gpt4 book ai didi

makefile - 何时/如何指定配置/制作目标

转载 作者:行者123 更新时间:2023-12-02 09:11:02 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

交叉编译是配置的 --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 提供的,因此所有项目都会以相同的方式执行此操作(尽管根据我的经验,许多项目不会定期尝试交叉编译,但会做一些错误的事情,从而无法正常工作)很好)。

关于makefile - 何时/如何指定配置/制作目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15293014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com