【发布时间】:2013-03-25 04:34:09
【问题描述】:
我只是从互联网上阅读信息,目前是cmake about page,我需要这些信息来填补空白,这有助于看到大局。
我希望答案很简单。什么是原生构建环境?
上下文:我需要知道如何在我的机器上构建软件(CodeBlocks 等)、为什么需要这样做、这样做的好处等。但首先,我需要我知道我遇到的每一个行话,我找不到任何关于“原生构建环境”到底是什么的解释,尽管我可以在某种程度上推测。
【问题讨论】:
标签: cmake
我只是从互联网上阅读信息,目前是cmake about page,我需要这些信息来填补空白,这有助于看到大局。
我希望答案很简单。什么是原生构建环境?
上下文:我需要知道如何在我的机器上构建软件(CodeBlocks 等)、为什么需要这样做、这样做的好处等。但首先,我需要我知道我遇到的每一个行话,我找不到任何关于“原生构建环境”到底是什么的解释,尽管我可以在某种程度上推测。
【问题讨论】:
标签: cmake
"Native" 如“直接在主机操作系统中运行”而不是“在虚拟机或模拟器中运行”。
CMake 的关于页面试图传达的具体点是 CMake 实现跨平台功能的方式:具体而言,不是通过虚拟化,而是通过直接与主机系统合作/协作,以及主机系统习惯于做事的“正常”方式。
那么构建环境是否只是包含编译器构建软件所需的所有垃圾的目录?
这过于简单化了——没有什么可以说它是一个单一的目录——但或多或少,是的。该术语不是行话,它的字面意思是构建所需的“世界状态”(又名环境)。
那你会怎么称呼其他东西,非本地人?
当然,或虚拟化,或模拟,或添加任何其他中间层。
为什么我们也需要区分?
为什么不呢?有一个简洁、清晰、简单的术语是很有用的,这样我们就可以准确地交流,尽量减少混淆和歧义。
【讨论】:
为什么是“非本地”?如果您还没有弄清楚这一点 - 有一种叫做交叉编译的东西。
简单地说,如果我无法访问需要在其上运行软件的目标硬件(或等效的虚拟机),我如何在我的主机上开发此软件并将其打包以在该目标上运行?
交叉编译通过提供执行翻译(或其他重要的低级内容)的必要工具来解决这个问题,从而为您提供最终软件。这种开发软件的环境称为非原生环境。
嗯,我相信我们需要这个词来说明技术。
【讨论】: