Maison  >  Article  >  Opération et maintenance  >  A quoi sert la compilation croisée Linux ?

A quoi sert la compilation croisée Linux ?

WBOY
WBOYoriginal
2022-08-17 17:31:502656parcourir

Sous Linux, la compilation croisée est un programme de compilation qui s'exécute dans un environnement informatique, qui peut compiler du code qui s'exécute dans un autre environnement ; le programme compilé de manière croisée a diverses ressources dans l'environnement cible à exécuter, il est donc limité. il est difficile d'effectuer une compilation locale directe. Parfois, c'est parce que la plate-forme cible n'autorise pas ou ne peut pas installer le compilateur dont nous avons besoin, et nous avons besoin de certaines fonctionnalités de ce compilateur, nous devons donc utiliser la compilation croisée.

A quoi sert la compilation croisée Linux ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

À quoi sert la compilation croisée Linux

Qu'est-ce que la compilation croisée

Compilation locale

Avant d'expliquer ce qu'est la compilation croisée, nous devons d'abord comprendre un concept : la compilation locale

Notre développement logiciel commun avant, Ils appartiennent tous à une compilation locale : sous le PC actuel, sous le CPU x86, le programme peut être compilé directement, et le programme (ou le fichier bibliothèque) peut être exécuté, qui peut être directement compilé dans l'environnement actuel, c'est-à-dire , sous le processeur x86, dans l'exécution de l'ordinateur actuel.

La compilation à ce moment peut être appelée : compilation locale, c'est-à-dire que le programme compilé peut être exécuté sous la plateforme cible actuelle simplement en le plaçant sur la plateforme actuelle.

Compilation croisée

La compilation croisée est un concept correspondant à la compilation locale.

La soi-disant compilation croisée est la suivante : compilé sur une plate-forme, le programme compilé est exécuté sur une autre plate-forme, c'est-à-dire que l'environnement compilé est différent de l'environnement d'exécution et est compilé de manière croisée. .

Cross-compilation, ce concept est principalement lié au développement embarqué.

Par exemple. : Compilez sur la plateforme x86 et exécutez sur la plateforme ARM.

L'un des exemples les plus courants est :

Lorsque vous faites du développement embarqué, vous disposez d'une carte de développement embarquée. Le CPU est arm et vous le développez sous une plateforme x86, comme Ubuntu Linux, ou Win 10 puis Configuration requise. :

Sur la plate-forme x86, (utilisez un compilateur croisé) pour compiler le code du programme que vous avez écrit

Le programme compilé (exécutable) est placé sur la carte de développement cible et exécuté sur le processeur du bras

Voici ce que cela signifie : compilé sur la plateforme x86 et exécuté sur la plateforme ARM.

La compilation croisée est souvent écrite sous forme de compilation croisée en anglais. Il existe également d'autres façons d'écrire : crosscompile, cross compilation, etc.

Pourquoi la compilation croisée

La principale raison pour laquelle il y a une compilation croisée est : il y a trop peu de ressources dans le système embarqué

L'explication spécifique est : le programme compilé de manière croisée doit s'exécuter dans l'environnement cible , diverses ressources sont relativement limitées, il est donc difficile d'effectuer une compilation locale directe.

La situation la plus courante est la suivante : lors du développement embarqué, la plate-forme cible, c'est-à-dire la carte de développement embarquée, par exemple, est un processeur ARM avec une fréquence maximale de 200 MHz, plus 32 Mo de RAM, plus 1G Nand Flash, etc. Dans l'hypothèse de ressources matérielles aussi limitées, et en partant du principe que Linux intégré est déjà en cours d'exécution, il n'est pas pratique de le compiler directement localement sous Linux intégré ou de le compiler sous le processeur ARM. Fournit des programmes que les processeurs ARM peuvent exécuter. Étant donné que la compilation et le développement nécessitent des quantités relativement importantes de CPU, de mémoire, de disque dur et d'autres ressources, et que les quelques ressources nécessaires au développement intégré suffisent uniquement à exécuter le système intégré (Linux), il ne reste pas beaucoup de ressources que vous pouvez utiliser localement. Compiler.

BusyBox contient make et d'autres outils liés à la compilation et au développement

En conséquence, lorsque vous vous familiariserez plus tard avec le développement embarqué et Busybox, par exemple, lors de la configuration de Busybox dans Buildroot, ou lors de la compilation croisée de BusyBox seul :

【 Record] Cross -compilez BusyBox pour la plateforme arm de QEMU sous Ubuntu

et vous verrez que la dernière BusyBox, après l'ajout de ses fonctions, a également inclus certains outils liés à la compilation et au développement, comme make, etc.

Et ces outils, à l'origine , il n'était utilisé que côté PC, c'est-à-dire que lors du développement sous la plate-forme x86, il n'était utilisé que lors de la compilation croisée. Désormais, il est également pris en charge dans l'environnement embarqué (BusyBox).

À ce stade, si vous sélectionnez tous les outils de développement pertinents dans BusyBox,

De plus, si la configuration matérielle de votre carte de développement cible est suffisamment puissante, par exemple, le CPU est mesuré en GHz, etc.

De plus , si les bibliothèques et outils de développement associés sont complets

En fait, du moins en théorie, cela peut également être réalisé dans votre Linux embarqué, dans une mesure limitée, voire dans une large mesure, effectuer directement du développement local. développement intégré sur la carte de développement ARM et Linux embarqué, et effectuer une compilation locale pour ARM

Par exemple, on estime qu'il est possible de compiler un helloworld.

De cette façon, la compilation croisée évoquée ici n'existe pas, ou en d'autres termes, est évitée, et devient une compilation locale

Elle est équivalente au compilateur précédent côté PC x86, fonctionnant sur le CPU x86 Compilation locale est également implémenté dans les processeurs ARM et Linux embarqué. Cependant, il est évident que pour des programmes ou des bibliothèques plus complexes, la faisabilité et l'efficacité de la compilation directe sur les cartes de développement ARM sont relativement faibles.

Et si vous lancez Uboot et d'autres choses vous-même et que l'environnement d'exploitation cible ne dispose pas d'un système complet (Linux intégré), il sera alors encore plus impossible de réaliser une compilation locale sur la plate-forme cible.

Vous ne pouvez toujours effectuer, comme mentionné ici, qu'une compilation croisée

Apprentissage recommandé : Tutoriel vidéo Linux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn