Frage Kompilieren unter Ubuntu 12.04 mit älterer glibc-Version


Ich mache einen Betriebssystemkurs, in dem wir ein Programm unter Ubuntu 9.10 kompilieren müssen. Dieses Programm läuft nicht wie erwartet auf späteren Versionen von Ubuntu (wie 12.04)

Meine Frage ist, wie kann ich ein C-Programm mit dem Kernel von 9.10 unter Ubuntu 12.04 kompilieren (die neueste Version)

Ich habe eine Ubuntu 9.10 Partition auf meinem Computer installiert, damit ich die Bibliotheken von dort benutzen kann. aber trotzdem würde ich gerne von meiner 12.04 Partition arbeiten.

Könnte sein dieses Handbuch könnte helfen?


4
2018-03-13 07:44


Ursprung




Antworten:


Es wäre am besten, wenn Sie eine "Chroot" für Ubuntu 9.10 erstellen und innerhalb dieser Chroot kompilieren würden.

Es gibt einige Details darüber in meiner Antwort auf Erstellen mehrerer Pakete für die Bereitstellung auf verschiedenen Ubuntu-Versionen, aber das grundlegende Verfahren ist:

  • Benutzen mk-sbuild --name=my-karmic-chroot karmic um eine neue Chroot für Ubuntu 9.10 zu erstellen (der Codename für 9.10 ist "karmic")
  • Benutzen schroot -c my-karmic-chroot um die neue Chroot zu betreten und dein kompilieren zu tun

Wenn Sie Ubuntu-Pakete kompilieren, sbuild Tool kann verwendet werden, um dies zu automatisieren.

Beachten Sie, dass dies nicht verwendet wird Kernel von 9.10, nur die Userspace-Komponenten (einschließlich libc und C-Laufzeitbibliotheken). Sie werden weiterhin den 12.04-Kernel ausführen. Benötigen Sie jedoch speziell den 9.10 Kernel?

Wenn Sie wirklich den 9.10 Kernel benötigen, können Sie verwenden virt-manager Einrichten einer 9.10 virtuellen Maschine auf Ihrer 12.04-Installation. Sie können sich dann einloggen, als wäre es eine echte 9.10-Maschine.


4
2018-03-13 07:59



aber ich werde den Anweisungen folgen, die in dem Link Ive gefunden wurden, der früher gezeigt wurde. noch einfacher, ich kann die GCC-Option ersetzen -nostdinc erklärt in der Verbindung mit --sysroot = my_ubuntu_9.10_partition dann hoffe ich, dass es mit dem 9.10 glibc libraries \ includes kompilieren würde - jokop
Du könntest das tun, aber eine Chroot ist "sauberer"; Bei komplexeren Projekten können andere Systemabhängigkeiten vorhanden sein, die nicht durch die sysroot-Konfiguration von gcc gesteuert werden. zB Sachen die benutzen pkg-config. - Jeremy Kerr