O artigo Compilador cruzado na wikipedia é muito bom. Geralmente, um compilador cruzado é um compilador que produz código para um tipo de sistema diferente do seu. Geralmente, isso significa uma arquitetura de hardware de destino diferente, mas também pode significar um sistema operacional de destino diferente (ou ambos).
Teoricamente, você poderia combiná-los e usar um compilador cruzado na arquitetura A 1 e no sistema operacional S 1 para criar um compilador cruzado que seria executado na arquitetura A < sub> 2 no sistema operacional S 2 e produz o código para o sistema operacional S 3 na arquitetura A 3 .
Como Ulrich menciona em seu comentário, o Linux GCC deve ser seu compilador "nativo" (ou seja, para o mesmo destino).