Eon*_*nil 112 autoconf configure cross-compiling option
该脚本./configure接受3个选项--build,--host和--target.我混淆了他们的角色.它们的区别和语义是什么?
小智 103
如本博客文章中所述并在GCC配置条款中提到,--target仅适用于编译工具链时.当您正在对您使用的库或二进制文件进行正常的交叉编译时
--build=the architecture of the build machine
--host=the architecture that you want the file to run on
Run Code Online (Sandbox Code Playgroud)
然而,当你正在构建工具链,事情变得更加复杂.我认为以下是正确的(虽然我不能说我曾经手动编译过交叉调试器):
让我们说你有:
您可以配置和构建调试服务器(例如gdbserver)以在嵌入式设备上运行
./configure --build=powerpc --host=mips
Run Code Online (Sandbox Code Playgroud)
这样你就可以把putty放到你的嵌入式设备上并运行"gdbserver:1234 a.out"来开始调试并监听端口1234.
然后,您将构建调试客户端(连接并控制gdbserver)
./configure --build=powerpc --host=i686 --target=mips
Run Code Online (Sandbox Code Playgroud)
您将复制到x86笔记本电脑,以便在现场运行"gdbclient embedded.device:1234"以调试您的a.out程序.
这一切都适用于您可能想要查看上面的GCC链接或本节关于加拿大交叉编译的编译器.
另请注意,在实践中,您可能看不到指定的构建,主机或目标,因为根据此Autoconf手册页,"目标默认为主机,主机构建,并构建为config.guess的结果."
总之,在构建代码--build,运行它--host与--target建筑环境.
Del*_*ani 72
注意:--target只有在构建编译器(例如GCC)时,参数才有意义.configure在构建GCC之前运行时:
--build:你正在建造的机器--host:你正在建造的机器--target:GCC将生成二进制文件的机器从GCC文档(主机/目标特定安装说明):
如果构建,主机和目标都相同,则称为本机.如果构建和主机相同但目标不同,则称为交叉.如果构建,主机和目标都不同,则称为加拿大(由于不明原因处理加拿大政党以及当时从事构建工作的人员的背景).如果主机和目标相同,但构建不同,则使用交叉编译器为不同的系统构建本机.有些人称之为host-x-host,cross native或cross-built native.如果构建和目标相同,但主机不同,则使用交叉编译器构建交叉编译器,为您正在构建的机器生成代码.这种情况很少见,因此没有通用的方法来描述它.有人建议将其称为交叉支持.
| 归档时间: |
|
| 查看次数: |
68307 次 |
| 最近记录: |