2010-12-22 16 views
2

Meine Distribution (Arch Linux) hat kürzlich die unterstützte Linux-Kernel-Mindestversion für ihre Toolchain erhöht. Ich kompiliere eine Webanwendung, die ich statisch verknüpfe und dann auf einen Webserver hochlade, und die Kernelversion auf dem Webserver ist zu alt für statische Bibliotheken, die mit der neuen Toolchain kompiliert wurden. (Ich bekomme einen Segmentierungsfehler, wenn ich versuche, statische Binärdateien auf dem Server auszuführen.) Gibt es eine Möglichkeit, Anwendungen mit der GNU-Toolchain (GCC, binutils, glibc) zu kompilieren, so dass Funktionen, die neuere Kernelversionen benötigen, weggelassen werden?Einstellung der minimalen Kernel-Mindestversion beim Kompilieren statischer Bibliotheken

Antwort

1

Glibc Kompatibilität ist wirklich nur in einer Richtung garantiert. (Ältere Binaries funktionieren auf neueren Systemen; umgekehrt nicht unbedingt.)

Um zu garantieren, dass Ihre Binaries auf älteren Systemen funktionieren, kompilieren Sie das Binden mit einem älteren glibc. Am einfachsten ist es, eine ältere Distribution zu finden, aber ich würde empfehlen, eine "crosstool" oder ähnliche Cross-Compiling-Toolchain zu erstellen, die auf eine andere libc als das Build-System abzielt (und das wiederholbare Builds über Hosts hinweg ermöglicht) was das System ist).

0

Danke. Ich habe auch die Option --enable-kernel für glibc gefunden, die das Arbeiten mit früheren Kerneln ermöglicht.