2015-10-29 21 views
5

Welchen Pfad sollte ich an die Option --prefix übergeben, wenn ich Cross Compiling durchführe: soll ich den Pfad auf meiner Buildmaschine oder den Pfad auf der Zielplattform angeben?configure "--prefix" -Option für Kreuzkompilierung

Angenommen, ich baue den Code in /home/me/arm/build/target_fs/usr, danach kopiere ich die Dateien in meine Zielplattform, wo sie bei /usr befinden werden. Sollte ich --prefix=/home/me/arm/build/target_fs/usr oder nur --prefix=/usr und dann make install DESTDIR=/home/me/arm/build/target_fs verwenden?

Ich dachte, dass die --prefix ist nicht der Pfad für Build, sondern der Pfad für die laufende Umgebung (d. H. Der Pfad auf der Zielplattform). Die Antworten here lassen mich denken, dass ich recht habe. Aber es gibt viele Seiten da draußen (zum Beispiel Cross-compiling FFmpeg for Raspbian: --prefix=/my/path/were/i/keep/built/) wo Menschen den Pfad auf Build-Maschine für die --prefix verwenden. Also bin ich verwirrt.

Antwort

5

Ja, Sie haben Recht, prefix der Pfad für Arbeitsumgebung ist. Verwenden Sie einfach --prefix =/usr. Sie können überprüfen, in welcher Ordnerpfad make Befehl installieren Sie Ihre Binärdatei durch die Installation in DESTDIR. Wenn Sie beispielsweise --prefix =/usr und make DESTDIR =/home/me/arm/build/target_fs verwenden, werden die Binärdateien im Ordner/home/me/arm/build/target_fs installiert/usr. Und wenn Sie einfach ausführen, installieren Sie, dann wird die Binärdatei in Ihrem Präfix installiert werden, d. H. In "/ usr".

Da Cross-Compiling ist, denke ich, es spielt keine Rolle, welches Präfix Sie verwenden, weil Sie sowieso in DESTDIR installieren und dann die Binärdateien manuell auf Ihr Ziel kopieren.

+0

Ich habe gehört, dass das Präfix vom kompilierten Programm verwendet werden kann, um nach einigen Dateien (wie Konfigurationen) zu suchen. Wenn ich '/ home/me/arm/build/target_fs/usr' für das Präfix verwende, dann könnte das kompilierte Programm versuchen, Dateien in'/home/me/arm/build/target_fs/usr' zu suchen, was ein Pfad auf meiner Seite ist Maschine bauen, nicht auf der Zielplattform, auf der das Programm läuft. Also denke ich, dass das Präfix in einigen Fällen von Bedeutung sein kann. –

+1

Für die Installation ist es egal. Aber ja, zur Laufzeit ist es wichtig. Ihre Binärdatei kann zur Laufzeit einige Konfigurationsdateien in Präfix suchen. Verwenden Sie einfach den Standardpfad zum Beispiel --prefix =/usr – Sami

+0

Danke, ich habe verstanden. –

-2

Wie Sie gefunden werden:

prefix = dirname Geben Sie die Top-Level-Installationsverzeichnis. Dies ist die empfohlene Möglichkeit, die Tools in einem anderen Verzeichnis als Standard zu installieren. Das Toplevel-Installationsverzeichnis ist standardmäßig /usr/local.

Soweit ich verstehe, versuchen Sie einen Compiler für ein Ziel zu kompilieren.

In diesem Fall wird prefix angeben Verzeichnis, wenn der Compiler nach make install Befehl auf Build Maschine installiert werden. Danach kannst du dort einen Compiler nehmen.

. Soll ich --prefix =/home/me/arm/build/target_fs/usr oder einfach --prefix =/usr verwenden und dann installiere DESTDIR =/home/me/arm/build/target_fs?

In Ihrem Fall haben prefix Befehl keinen Sinn. Weil Sie Binärdateien mit den Händen kopieren.

Sie können auch alle anderen Informationen auf GCC offiziellen Website finden: https://gcc.gnu.org/install/finalinstall.html

+0

Nein, ich kompiliere keinen Compiler, ich übersetze gewöhnliche Pakete (wie ffmpeg), die auf ARM-CPU ausgeführt werden. Die "Kopie" in meinem Fall ist nicht nur 'cp', es ist ein Skript, das Dateisystem Bild zum Brennen in Zieltafel macht. –

+0

Dann scheint es, Sie müssen 'DESTDIR' https://www.gnu.org/prep/standards/html_node/DESTDIR verwenden.html – Arseniy

+1

Präfix kann sicherlich eine große Wirkung haben, es wird oft verwendet, um Pfade in Binärdateien selbst fest oder z. in generierten Konfigurationsdateien. Sie möchten --prefix als Installationspfad angeben, der zur Laufzeit verwendet wird. – nos

Verwandte Themen