“ ./configure”选项“ --build”,“-host”和“ --target”有什么区别?

欧尼尔

该脚本./configure接受3个选项--build--host--target我混淆了他们的角色。它们的区别和语义是什么?

用户名

本博文所述,在GCC配置条款中已提及--target仅在编译工具链时适用。在对库或二进制文件进行常规交叉编译时,请使用

--build=the architecture of the build machine
--host=the architecture that you want the file to run on

然而,当你正在构建工具链,事情变得更加复杂。我认为以下是正确的(尽管我不能说我曾经手动编译过交叉调试器):

假设您有:

  • 将要在其上进行所有编译的powerpc构建机器
  • 几个带有mips处理器的嵌入式设备,您的代码将在这些设备上运行
  • 您将用于在现场调试这些设备的x86笔记本电脑

您将配置并构建调试服务器(例如gdbserver)以在嵌入式设备上运行

./configure --build=powerpc --host=mips

这样您就可以将腻子安装到嵌入式设备上并运行“ gdbserver:1234 a.out”以开始调试并侦听端口1234。

然后,您将使用以下命令构建调试客户端(该客户端连接并控制gdbserver)

./configure --build=powerpc --host=i686 --target=mips 

您可以将其复制到x86笔记本电脑,以便在该字段中可以运行“ gdbclient Embedded.device:1234”以调试a.out程序。

这也适用于编译器,您可能要查看上面的GCC链接或有关加拿大交叉编译的本节

还要注意,实际上,您可能看不到指定的build,host或target,因为根据此Autoconf手册页,“目标默认为host,要编译的主机,以及根据config.guess生成的结果。”

总之,建立在代码--build上运行它--host--target建筑环境。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章