交叉编译器的基本用法就是将构建环境与目标环境分开。常在下面几种情况中使用:
嵌入式电脑。这种设备的资源有限,举例来说:微波炉有一个非常小的计算机来读取其触摸板和门传感器,并向数字显示器和扬声器提供输出,以控制用于烹饪食物。这台计算机不足以运行编译器,文件系统或开发环境,因为调试和测试需要更多的嵌入式系统资源,使得在目标机上编译变得更不可能。采用交叉编译,在资源足够的机器上完成构建工作,就可以解决这个问题。
编译多个目标库。举个例子,一个公司可能希望支持不同版本或不同种类的操作系统,有了交叉编译,便可以为每个目标设置一个编译环境进行编译。如:在Windows中为底层构造完全不同的Linux编译程序;在电脑上为移动端操作系统构建程序。
在服务器上编译。类似于在多个机器进行编译,一个复杂的编译可能会涉及到许多的编译操作,可以将这些编译操作放到空闲的机器上执行,无论其底层硬件或其运行的操作系统版本如何。
引导一个新平台(Bootstrapping)。在为新平台开发软件,或者开发/使用未来平台的仿真器时,则使用交叉编译器来编译必要的工具,如操作系统和本机编译器。
程序虚拟机(比如JVM)也借鉴了当初开发交叉编译器的理念。它可以用同一份输出在多个目标系统上运行,但是编译后的代码必须运行在虚拟机上。