交叉编译 – 如何在使用交叉编译器时确定configure的主机值

一般问题:如果我使用交叉编译器,我怎么能告诉我在运行configure时应该给出的“–host”选项的值?

具体:我正在使用arm64 arch的交叉编译器.什么是正确的“–host”值?

最佳答案

If I use a cross compiler, how can I tell the value of the --host option I should give when I run ./configure?

在讨论工具链创建时必须区分三台机器

>构建工具链的构建机器.
>主机,将执行工具链.
>目标机器,由二进制文件创建的二进制文件
工具链被执行.

工具链有四种常见的构建类型:

>原生构建,即BUILD == HOST == TARGET
用于为工作站构建普通gcc.例如BUILD == == HOST TARGET = = 86
>交叉构建,即BUILD == HOST!= TARGET
用于构建在工作站上工作但为目标生成二进制文件的工具链.例如BUILD == HOST == x86 TARGET == arm
>跨本机构建,即BUILD!= HOST == TARGET
用于在目标上运行的工具链,并为目标生成二进制文件.例如BUILD == x86 HOST == TARGET == ARM
>加拿大工具链,即BUILD!= HOST!= TARGET
用于构建体系结构工具链在B上运行并为体系结构C生成二进制文件.例如,BUILD == x86 HOST == mac TARGET == arm

武装这个基础知识即将出现在您的问题中.

对于任何软件,首先运行./configure –help

主机类型:

--build=BUILD           configure for building on BUILD [BUILD=HOST]
--host=HOST             configure for HOST [guessed]
--target=TARGET         configure for TARGET [TARGET=HOST]

您将在上面找到,具体取决于您想要做什么,您需要将其设置为交叉编译.如果所有选项都可用,那么您希望在arm目标上执行,然后设置–host = {your toolchain triplet} –target = {your toolchain triplet}.

例如,如果您使用的是arm-none-linux-gnueabi-gcc,请设置–host = arm-none-linux-gnueabi –target = arm-none-linux-gnueabi.这将写入您的makefile.
最后,生成的可执行文件将在目标上运行对于–build,这将自动设置,无需担心.

对于某些软件包,只有两个选项可用,即主机和构建.这里如果set host足以交叉编译

Specific: I’m using cross compiler for arm64 arch. What is the correct --host value to use?

对于x86_64,通常会给出–host = {triplet},所以我认为同样适用于arm64,为你的工具链设置–host = {triplet},但我不确定.

转载注明原文:交叉编译 – 如何在使用交叉编译器时确定configure的主机值 - 代码日志