Kreuzkompilierung: GCC ignoriert --sysroot

8

Ich versuche, Programme (derzeit avconv von libav) für ein Nokia N9-Handy mit Hilfe von arm-linux-gnueabi-gcc aus Linux Mints 64-Bit-Repository zu kompilieren. Die libc-Version des Compilers ist 2.15 und das Telefon hat libc-2.10.1. Sie haben eine Inkompatibilität in der Mathe-Bibliothek, die mir einen segfault gibt, wenn ich das avconv-Programm von libav kompiliere und ausführe.

Ich müsste die ältere libc-Version kompilieren und verlinken, aber es ist mir nicht gelungen, die Option --sysroot zu aktivieren.

Ich habe ein kleines Testprogramm gemacht, um zu vermeiden, dass libav immer wieder konfiguriert und kompiliert wird.

%Vor%

Beide Befehle erzeugen eine identische Ausgabedatei. So sieht hello.c aus:

%Vor%

Der seltsamste Teil ist, dass gcc die Option --sysroot komplett ignoriert. Wenn ich ein nicht existierendes Verzeichnis an Sysroot übergebe, erzeugt es immer noch genau das gleiche Ausgabebinär:

%Vor%

Es beschweren sich nicht einmal über irgendwelche Fehler. Was ist das Problem?

    
trololo 11.07.2013, 20:47
quelle

1 Antwort

1

Da ich ein paar Tage damit verschwendet habe, bevor ich die Kommentare lese, poste ich arless noise Kommentare als Antwort:

"Führen Sie den Compiler mit arm-linux-gnueabi-gcc -v aus und schauen Sie sich den Wert von --with-sysroot an; dies ist das Verzeichnis, in dem der Compiler erstellt wurde. Wenn Sie dieses Verzeichnis auf Ihrem Computer haben (vielleicht mit einem anderen Compiler), dann --sysroot funktioniert möglicherweise nicht [; und wenn Sie nicht sehen, --with-sysroot und stattdessen --with-libs , bedeutet dies], dass Ihr gcc ohne --sysroot support kompiliert wird. "

    
jcomeau_ictx 26.05.2016 15:15
quelle

Tags und Links