平台,编译工具,应用程序这三者的关系要搞明白:
1,平台的含义通常有两点:处理器与操作系统,处理器与指令集有关,操作系统关系的库的调用。
2,编译工具,应用程序都是软件,都要在相应的平台上运行
3,编译工具三要素:运行平台,目标平台,源码语言。
4,编译工具是用于把源码生成可方便运行的代码的工具,源码具有自然的平台无关性,源码这种并不是必然的,而是要求编译它的编译工具支持源码所用到特性。
5,编译工具的运行平台,与编译的目标平台可以不一样,这就是交叉编译。交叉编译需要的信息就是目标平台的指令集与库。通常前者内置,后者有可扩展性。指令集的版本与编译工具的版本是相关的,通常有后面相容性,也就是尽可能用最新版的,但也有例外。
6,所谓的挎平台,主要是指:编译工具支持面向多平台的编译。挎平台不是全平台,好在平台经过商业竞争,流行的不是太多。
7,平台差异,在编译工具难以完美解决时,加上处理器性能的进步,就有了虚拟机的解决方案。
因为平台的不断改进中,挎平台编译工具中延生出许多种类。源码(如C)自然的平台无关性,越来越被平台的特殊性所掩盖。从面也发展出了JAVA,Python这样的高编语言,它们结合虚拟机与编译器,平解决挎平台问题。这里就要面向不同平台出不同的虚拟机。
别一种方式,如GNU的解决方式。GNU是一组编译工具,这种工具确定了C与C++写成的代码的标准(是C与C++可写代码集的一个子集)。依这种标准可以被GNU所提供的编译工具编译到目标平台。其解决的方法是面向不同平