常见问题:如果使用交叉编译器,如何确定运行configure时应提供的“ --host”选项的值?

具体:我正在使用交叉编译器进行arm64架构。要使用的正确“ --host”值是多少?

最佳答案

如果使用交叉编译器,如何确定运行--host时应提供的./configure选项的值?


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


构建工具链的构建机器。
主机,将在其中执行工具链。
目标计算机,由该计算机创建的二进制文件
工具链被执行。


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


本机版本,即BUILD==HOST==TARGET
用于为工作站构建普通的gcc。例如BUILD==HOST==TARGET==x86
交叉构建,即BUILD==HOST!=TARGET
用于构建可在您的工作站上运行但为目标生成二进制文件的工具链。例如BUILD==HOST==x86 TARGET==arm
跨原生构建,即BUILD!=HOST==TARGET
用于在目标上运行并为目标生成二进制文件的工具链。例如BUILD==x86 HOST==TARGET==ARM
加拿大工具链,即BUILD!=HOST!=TARGET
用于构建架构A的工具链可在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]


您将在上面找到,因此根据您要执行的操作,需要将其设置为交叉编译。如果所有选项均可用,则您要在手臂目标上执行,然后设置--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,它将自动设置,无需担心。

对于某些软件包,只有两个选项i.e host and build。这里是否设置host足以交叉编译


特定:我正在为arm64拱使用交叉编译器。正确的--host值是多少?


对于x86_64,通常给出--host={triplet},因此我认为通过为您的工具链设置--host={triplet},同样适用于arm64,但我不确定。

关于cross-compiling - 使用交叉编译器时如何确定要配置的主机值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21990021/

10-14 07:10