Nachdem ich die Antworten auf meine vorherige Frage gelesen habe , bin ich zu dem Schluss gekommen, dass eine Antwort auf die folgende Frage das ist, wonach ich tatsächlich gesucht habe:
Benötigt eine bestimmte Version des Kernels eine bestimmte Version von libc, um ordnungsgemäß ausgeführt zu werden?
Grundsätzlich ist mein Problem darauf zurückzuführen, dass ich eine Anwendung auf meinem 12.04-Ubuntu erstellt und versucht habe, sie auf 8.04 auszuführen. Ich habe seitdem aus diesem und anderen Stackexchange-Foren gelernt, dass es die Abwärtskompatibilität von libc ist, die diese Probleme verursacht. Daher versuche ich vielleicht naiv, dieselbe Version von libc zu erstellen, die auf meinem Ziel vorhanden ist, und dann beim Erstellen der Anwendung auf meinem Host eine Verknüpfung dazu herzustellen. In einer idealen Welt, in der ich dies auf den Host kopiere und mit der "richtigen" Bibliothek verknüpft bin, sollte es funktionieren (zumindest in meinem Kopf). Ich konnte überhaupt keine Möglichkeit finden, eine ältere Bibliothek auf meinem System zu installieren, und habe mich gefragt, ob jede Version eng an eine Kernelversion gebunden ist, daher die obige Frage.
If you're building GCC yourself from source, you can configure the build to install in its own prefix (rather than /usr).
Von der Antwort auf Ihre andere Frage sollte das Problem gelöst werden.Antworten:
Ja, es sei denn, Sie erstellen den Kernel selbst aus dem Quellcode mit Ihrer bevorzugten libc-Version. Die Ubuntu-Kernel basieren auf der LTS-Version vor der Zielversion, daher waren die "neuesten" Ubuntu-Kernel, die mit 8.04 libc kompatibel sind, die für Ubuntu 9.10.
quelle
Sie sind in gewisser Weise miteinander verbunden.
Wenn Sie also die Kernel-Pakete und libc-Pakete von den Ubuntu-Repos installieren, anstatt sie selbst zu kompilieren, stecken Sie im obigen Dilemma.
Was libc betrifft, besteht eine Möglichkeit, das, was Sie vorschlagen, darin, den 12.04-Kernel aus dem Quellcode am 8.04 zu kompilieren und ihn so mit dem 8.04-libc zu verknüpfen. Dann verwenden Sie diesen benutzerdefinierten Kernel, um 12.04 zu starten, auf dem Sie die libc-Version von 8.04 kompilieren, ebenfalls aus dem Quellcode. Sie installieren das und Ihre Anwendungen sollten dieselbe alte 8.04-Bibliothek verwenden.
Ich gehe davon aus, dass Sie auch wissen, dass andere 12.04-Bibliotheken, mit denen Ihre Anwendung verknüpft ist, in 8.04 möglicherweise nicht verfügbar sind. Sie müssen sie daher auch aus dem Quellcode kompilieren ...
Zusammenfassend ist es am besten, nur am 8.04 zu kompilieren .
quelle