Frage

Meine Distribution (Arch Linux) hat vor kurzem das Minimum erhöhte unterstützte Linux-Kernel-Version für seine Toolchain. Ich bin die Erstellung eine Web-Anwendung, dass ich statisch verknüpfen und dann auf einen Webserver laden, und die Kernel-Version auf dem Web-Server ist zu alt für statische Bibliotheken mit der neuen Werkzeugkette zusammengestellt. (Ich einen Segmentation Fault, wenn ich versuche, statische Binärdateien auf dem Server ausgeführt werden.) Gibt es eine Möglichkeit, Anwendungen zu erstellen, die GNU-Tools verwenden (GCC, Binutils, glibc), so dass Funktionen neuere Kernel-Versionen erforderlich sind, weggelassen?

War es hilfreich?

Lösung

Glibc Kompatibilität ist wirklich nur in einer Richtung gewährleistet. (Ältere Binärdateien arbeiten auf neueren Systemen, umgekehrt, die nicht unbedingt so.)

Um sicherzustellen, dass Ihre Binärdateien auf älteren Systemen arbeiten, kompilieren mit einem älteren glibc verknüpfen. Der einfachste Weg, dies zu tun, ist eine ältere Distribution zu finden, aber ich würde empfehlen, die Einrichtung eines „ cross "oder ähnliche Crosskompilierung Werkzeugkette eine andere libc Targeting als das, was Ihr Build-System verwendet (und dies ermöglicht wiederholbare über Hosts baut unabhängig davon, was das System ist).

Andere Tipps

Danke. Ich fand auch die --enable-Kernel-Option auf glibc, die mit früheren Kernel ermöglicht arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top