quelle est la difficulté à compiler pour une plateforme X sur une plateforme Y ?
Rien de compliqué. Il faut juste avoir une chaîne de compilation croisée. Et c'est là le hic : générer ou obtenir une telle chaîne de compilation n'est pas trivial…
il s'agit "juste" de traduire d'un langage à un autre
De manière généralement admise, la compilation consiste à traduire un programme écrit dans un langage de haut niveau (ie. compréhensible par humain, comme le C), en instructions interprétables par le CPU (ie. une suite d'octets, du 'code binaire').
Chaque architecture (ARM, x86, MIPS…) possède son propre jeu d'instructions, non compatibles entre eux. Donc il faut une chaîne de compilation spécifique pour chaque architecture (voire, comme expliqué plus haut, pour chaque combinaison de variante de CPU, de flags, de libc, etc…).
Traduire d'un langage à un autre (eg. prendre un programme écrit en Go, et émttre du code C) n'est généralement pas considéré comme de la compilation. Dans ce cas on parle de trans-compilation. (et pas de cross-compilation).
NB: le code assembleur est déjà un langage de programmation, de bas niveau, mais doit tout de même être 'compilé' (dans ce cas particulier, on dit 'assemblé') pour générer du code binaire.
[^] # Re: Quelle est la difficulté de la compilation croisée ?
Posté par ymorin . En réponse au journal Chaine(s) de compilation ARM. Évalué à 6.
Rien de compliqué. Il faut juste avoir une chaîne de compilation croisée. Et c'est là le hic : générer ou obtenir une telle chaîne de compilation n'est pas trivial…
Juste pour info : How is a toolchain constructed?
De manière généralement admise, la compilation consiste à traduire un programme écrit dans un langage de haut niveau (ie. compréhensible par humain, comme le C), en instructions interprétables par le CPU (ie. une suite d'octets, du 'code binaire').
Chaque architecture (ARM, x86, MIPS…) possède son propre jeu d'instructions, non compatibles entre eux. Donc il faut une chaîne de compilation spécifique pour chaque architecture (voire, comme expliqué plus haut, pour chaque combinaison de variante de CPU, de flags, de libc, etc…).
Traduire d'un langage à un autre (eg. prendre un programme écrit en Go, et émttre du code C) n'est généralement pas considéré comme de la compilation. Dans ce cas on parle de trans-compilation. (et pas de cross-compilation).
NB: le code assembleur est déjà un langage de programmation, de bas niveau, mais doit tout de même être 'compilé' (dans ce cas particulier, on dit 'assemblé') pour générer du code binaire.