【发布时间】:2018-04-11 03:32:40
【问题描述】:
我看到很多冲突信息,希望得到澄清。 build、host 和 target
构建知道三个系统名称:您正在构建的机器(构建),您正在为其构建的机器(主机),以及 GCC 将为其生成代码的机器(目标)。当您配置 GCC 时,您可以使用 --build=、--host= 和 --target= 来指定它们。
其实我不明白上面定义中的host和target有什么区别。
其他页面说
‘host’是你用来编译代码的机器(或架构,或平台); “目标”是用于运行代码的机器(或架构或平台)。
这对我来说是有道理的,但在这个解释中,host 是否总是与 build 相同?我很困惑。
就我而言,我的配置是这样的 编译器 (GCC) 在 x86_64 机器上运行,二进制可执行文件在 ARM 上运行。程序是用C编写的,所以编译器是GCC。
./configure --build=x86_64 --host=x86_64 --target=arm-linux-gnueabihf
make
make install
听起来像 build,host 都是 x86_64,target 是 arm。对吗?
我正在编译我自己的在 Jenkins 机器 (x86_64) 上运行的嵌入式程序。嵌入式程序运行在基于ARM的机器上。
【问题讨论】:
-
你在编译什么程序? GCC 的一些交叉编译器版本,或者只是您自己的程序和已经可用的
gcc二进制文件?显示一些 minimal reproducible example (所以在你的问题中显示一些源代码)并显示你正在使用的 exact 编译命令(并解释它们在哪些计算机上运行)。讲述你的系统(什么是主机、构建机器、目标机器)。请编辑您的问题以改进它。目前令人困惑。 -
即使进行了编辑,您的问题也不清楚:“我正在配置这样的编译器”是什么意思? 配置了什么,如何配置?请进一步改进您的问题。 给出确切的命令。解释他们在哪些计算机上运行。 你使用什么编译器? 和 你如何使用它?
-
显然英语不是你的母语(我也不是;我是法国人)。所以改进你的措辞(也许在一些字典的帮助下),并给出你正在使用的确切的命令。恕我直言,“我正在配置使得编译器在 x86_64 机器上运行而二进制可执行文件在 ARM 上运行”这句话没有任何意义(你不知道你在配置什么以及如何配置)。鉴于英语对您来说并不容易,您需要在问题中添加更多信息和冗余。
-
花点时间改进您的问题,提供一些minimal reproducible example 并提供用于构建和测试您的程序的确切命令。
-
@BasileStarynkevitch 没关系。我想你澄清了我的误解。非常感谢。
标签: gcc cross-compiling