Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was nützt die Linux-Cross-Kompilierung?

Was nützt die Linux-Cross-Kompilierung?

WBOY
WBOYOriginal
2022-08-17 17:31:502722Durchsuche

Unter Linux ist Cross-Compilation ein Kompilierungsprogramm, das in einer Computerumgebung ausgeführt wird und Code kompilieren kann, der in einer anderen Umgebung ausgeführt wird. Das Cross-Compilation-Programm verfügt daher über verschiedene Ressourcen, die in der Zielumgebung ausgeführt werden können Es ist schwierig, eine direkte lokale Kompilierung durchzuführen. Manchmal liegt es daran, dass die Zielplattform den von uns benötigten Compiler nicht zulässt oder nicht installieren kann und wir bestimmte Funktionen dieses Compilers benötigen, sodass wir die Kreuzkompilierung verwenden müssen.

Was nützt die Linux-Cross-Kompilierung?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.

Was nützt die Linux-Cross-Kompilierung?

Was ist Cross-Kompilierung? Vorher gehören sie alle zur lokalen Kompilierung: Unter dem aktuellen PC und unter der x86-CPU kann das Programm direkt kompiliert werden, und das Programm (oder die Bibliotheksdatei) kann ausgeführt werden, was bedeutet, dass es direkt in der aktuellen Umgebung kompiliert werden kann , unter der x86-CPU, im aktuellen Computerlauf. Die Kompilierung zu diesem Zeitpunkt kann aufgerufen werden: lokale Kompilierung, das heißt, das kompilierte Programm kann unter der aktuellen Zielplattform ausgeführt werden, indem es einfach auf die aktuelle Plattform gestellt wird.

Cross-Compilation

Cross-Compilation ist ein Konzept, das der lokalen Kompilierung entspricht.

Die sogenannte Cross-Kompilierung ist: Auf einer Plattform kompiliert, wird das kompilierte Programm auf einer anderen Plattform ausgeführt, dh die kompilierte Umgebung unterscheidet sich von der laufenden Umgebung, und es wird Cross-Compilation durchgeführt kreuzen. .

Cross-Compilation, dieses Konzept bezieht sich hauptsächlich auf die eingebettete Entwicklung.

Zum Beispiel: Auf einer x86-Plattform kompilieren und auf einer ARM-Plattform ausführen.
Eines der häufigsten Beispiele ist:

Wenn Sie eine eingebettete Entwicklung durchführen, haben Sie ein eingebettetes Entwicklungsboard. Die CPU ist arm und Sie entwickeln es unter einer x86-Plattform, wie z. B. Ubuntu Linux, oder Win 10 und dann Anforderungen :

Auf der x86-Plattform (verwenden Sie einen Cross-Compiler), um den von Ihnen geschriebenen Programmcode zu kompilieren

Das kompilierte (ausführbare) Programm wird auf der Zielentwicklungsplatine platziert und auf der Arm-CPU ausgeführt

Das ist die Bedeutung : Auf der x86-Plattform kompiliert und auf der ARM-Plattform ausgeführt.

Cross-Kompilierung wird im Englischen oft als Cross-Compile geschrieben. Es gibt auch andere Schreibweisen: Cross-Compile, Cross-Compiling usw.

Warum gibt es Cross-Compilation? Da verschiedene Ressourcen relativ begrenzt sind, ist es schwierig, eine direkte lokale Kompilierung durchzuführen.

Die häufigste Situation ist: Bei der eingebetteten Entwicklung ist die Zielplattform, also beispielsweise das eingebettete Entwicklungsboard, eine ARM-CPU mit einer maximalen Frequenz von 200 MHz, plus 32 MB RAM, plus 1 GB NAND-Flash usw. Unter der Voraussetzung, dass die Hardwareressourcen so knapp sind und eingebettetes Linux bereits ausgeführt wird, ist es nicht praktisch, es direkt lokal unter eingebettetem Linux zu kompilieren oder es unter der ARM-CPU zu kompilieren. Bietet Programme, die von ARM-CPUs ausgeführt werden können. Da Kompilierung und Entwicklung relativ viel CPU, Speicher, Festplatte und andere Ressourcen erfordern und die wenigen Ressourcen für die eingebettete Entwicklung nur ausreichen, um das eingebettete (Linux-)System auszuführen, und es nicht viele verbleibende Ressourcen gibt, die Sie lokal verwenden können . Kompilieren.

BusyBox enthält Make und andere Tools im Zusammenhang mit Kompilierung und Entwicklung -Kompilieren Sie BusyBox für die ARM-Plattform von QEMU unter Ubuntu

und Sie werden sehen, dass die spätere BusyBox nach dem Hinzufügen ihrer Funktionen auch einige Tools im Zusammenhang mit der Kompilierung und Entwicklung enthält, wie z. B. make usw.

Und diese Tools ursprünglich , es wurde nur auf der PC-Seite verwendet, das heißt, bei der Entwicklung unter der x86-Plattform wurde es nur beim Cross-Compilieren verwendet. Jetzt wird es auch in der eingebetteten Umgebung (BusyBox) unterstützt. Wenn Sie zu diesem Zeitpunkt alle relevanten Entwicklungstools in BusyBox auswählen, Außerdem, wenn die Hardwarekonfiguration Ihres Ziel-Entwicklungsboards leistungsstark genug ist, wird beispielsweise die CPU in GHz usw. gemessen.

Zusätzlich , wenn die zugehörigen Entwicklungsbibliotheken und Tools vollständig sind

Tatsächlich kann es zumindest theoretisch auch in begrenztem Umfang oder sogar zu einem großen Teil direkt in Ihrem eingebetteten Linux durchgeführt werden Embedded-Entwicklung auf dem ARM-Entwicklungsboard und eingebettetem Linux sowie lokale Kompilierung für ARM

Es wird beispielsweise geschätzt, dass es möglich ist, eine Hallowelt zu kompilieren.

Auf diese Weise existiert die hier erwähnte Kreuzkompilierung nicht oder wird mit anderen Worten vermieden und zur lokalen Kompilierung.

Es entspricht dem vorherigen Compiler auf der x86-PC-Seite, der auf der lokalen Kompilierung der x86-CPU ausgeführt wird ist auch in ARM-CPUs und eingebettetem Linux implementiert. Es ist jedoch offensichtlich, dass die Machbarkeit und Effizienz der direkten Kompilierung auf ARM-Entwicklungsboards relativ gering ist

Und wenn Sie selbst auf Uboot und andere Dinge verzichten und die Zielbetriebsumgebung nicht über ein vollständiges (eingebettetes Linux-)System verfügt, wird es noch schwieriger, eine lokale Kompilierung auf der Zielplattform zu erreichen.

Sie können immer noch nur, wie hier erwähnt, Cross-Compilation durchführen

Empfohlenes Lernen: Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas nützt die Linux-Cross-Kompilierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn