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:
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:
Es beschweren sich nicht einmal über irgendwelche Fehler. Was ist das Problem?
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. "
Tags und Links gcc arm cross-compiling