如何确定使用交叉编译器时配置的主机值

问题描述 投票:0回答:2

总问题:如果我使用交叉编译器,我该如何说出我运行配置时应该给出的“ - 主持人”选项的值?

特定:我正在为ARM64拱门使用Cross编译器。正确使用的“ - 主持人”值是什么?
cross-compiling autoconf arm64
2个回答
53
投票

如果我使用交叉编译器,我该如何判断我运行时应该给出的选项的值?

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

建造工具链的地方
构建机。

主机
    ,将执行工具链。
  • the the the the the the the the the binaries创建的二进制文件 执行工具链 工具链的四种常见构建类型是:
  • 本性构建
  • 用于为工作站建造普通的海湾合作委员会。例如
  • --host
  • cross-build

./configure

    用于构建在工作站上工作但为目标生成二进制的工具链。例如
  • BUILD==HOST==TARGET

    sross-native build

    用于在目标上有效并为目标生成二进制的工具链。例如
    

    CANADIAN工具链即
    用于构建架构A A工具链在B上运行并为架构生成二进制。例如
    

    武装这个基础知识来提出您的问题。
  • 对于任何软件,首先运行
  • BUILD==HOST==TARGET==x86

    主机类型:

    BUILD==HOST!=TARGET
    您会在上面找到,因此取决于您想做的事情,需要将其设置为交叉编译。如果所有选项都可用,则要在ARM目标上执行,然后设置
    BUILD==HOST==x86 TARGET==arm

  • ,例如,如果您使用的是
  • BUILD!=HOST==TARGET

    ,请设置BUILD==x86 HOST==TARGET==ARM。这将写给您的makefile。 最后,生成的可执行文件将在目标上运行。因为这将自动设置,因此无需担心。

    对于某些软件包,只有两个选项可用。在这里,如果设置足以交叉编译

    特定于特定的:我正在使用交叉编译器进行
    BUILD!=HOST!=TARGET
    拱门。什么是正确使用的

    BUILD==x86 HOST==mac TARGET==arm
  • 值?
  • 对于x86_64,通常给出

    ./configure --help
    ,所以我认为通过为您的工具链设置
    --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST]
    ,我认为ARM64也应该有效,但我不确定。
        

  • 最简单的方法是在主机上运行
--host={your toolchain triplet} --target={your toolchain triplet}

arm-none-linux-gnueabi-gcc

中输入的方法。在我的机器上,它位于

--host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
中,但我建议跑步

--build

找到它。

脚本是开源(GPL),并且在此地址上可用,以防您的计算机上可用:

https://git.savannah.gnu.org/gitweb/?p = config.git; a = blob_plain; f =config.guess



在我的目标机器中,Tegra X1(也是AARCH64)的答案是Arch64-inarch-ninknown-linux-gnu,它似乎可以很好地进行交叉编译。
    

-主机是最终将最终运行的机器的“三重态”。在您的情况下,“ ARM64”是建筑,但这只是三胞胎的一部分。无论如何,它将三胞胎中的字符串“ Aarch64”映射。一个可能的值是
-host = aarch64-linux-android
this fromgnu.org
的第一个页面给出了有关 - 主持/ -  target/ -  build usage

其他答案中已经说明了许多有用的事情,但是某种程度上似乎都没有回答问题的实际方面。

在哪里寻找有效的值以传递到
i.e host and build

在其他答案中已陈述,并且可以在AutoConf手册中读取有关

指定目标三重序列
,该值传递给
host

arm64

--host

选项的值称为一个
--host={triplet}
具有形式

--host={triplet}

19
投票
这回答了有关这些值应该具有的格式的问题,但仍然让我们陷入黑暗中,以了解如何弄清楚

--host

config.guess
/usr/share/automake-1.15/
的方法。幸运的是,AutoConf手册中还有另一个页面,涉及
指定系统类型

查看文件

locate config.guess

有关每个字段的可能值。如果此软件包中未包含config.sub,则此软件包不需要知道机器类型。

因此,使用的确切值是特定于您要编译的程序的特定值。然后在--host文件中列出了可能的选项(如果不存在该文件,则不必首先指定目标三重态)。

在此文件中,您找不到所有可能的目标三重态的整洁列表。取而代之的是,您必须涉足三胞胎格式的狂欢解析,但这应该使您了解可用的三胞胎。但是,在任何特定用例中确定正确的艺术仍然是读者的练习。据推测,在此文件中搜索您针对的CPU体系结构的名称以及OS(Linux/Windows/MacOS/等)可能会使您了解什么可能有效。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.