En programmation, que signifie « natif » ?


Lorsqu'il développe un logiciel, le programmeur a tendance à utiliser une plateforme informatique particulière pour effectuer son travail. Par exemple, on peut choisir une plateforme Linux x86 64 bits en utilisant une distro comme Debian, ou on peut choisir une plateforme PC Windows particulière, ou un Mac quelconque. Le logiciel construit en mode natif fonctionnera sur cette plate-forme particulière. Il peut, mais pas toujours, fonctionner sur d'autres plates-formes. C'est généralement le cas des applications Java, puisqu'elles ciblent la machine virtuelle Java et qu'en principe, toute plate-forme hébergeant une JVM peut exécuter le logiciel, quelle que soit l'architecture hôte de construction. Mais généralement, en particulier pour les langages compilés comme C ou C++, ce n'est pas le cas.


Le cas contrasté serait celui où un hôte de compilation prend en charge le développement croisé en utilisant une sorte de chaîne d'outils croisée. Un exemple pourrait être qu'un développeur utilise une chaîne d'outils croisée hébergée par Linux x86 pour développer du code pour un certain système embarqué utilisant une architecture de CPU complètement différente, comme ARM, par exemple. C'est assez courant lorsque l'architecture cible ne supporte pas facilement une toolchain native, en raison de contraintes de ressources telles que la mémoire, le stockage, la vitesse, etc.


Il est même possible d'avoir un système hybride, appelé une toolchain cross-native. Cela pourrait être quelque chose comme un hôte de construction Linux x86 d'une certaine version particulière, où l'architecture cible est une autre architecture Linux x86. C'est assez peu courant, et c'est un peu délicat à mettre en place correctement.

La chaîne de construction native croisée est un système hybride.