Ich muss C++ Programme entwickeln, die auf Scientific Linux 5 oder 6 laufen müssen. Ich möchte mit QtCreator auf Ubuntu entwickeln, das viel neuere Bibliotheken als die auf SCL6 gefunden hat.Gibt es ein Äquivalent von Pythons virtualenv für C/C++ - Programme?
Gibt es ein Äquivalent von Pythons virtualenv für C/C++ - Programme?
Die Verwendung einer Chroot mit allen erforderlichen Bibliotheken und Abhängigkeiten könnte die Aufgabe erledigen. Gibt es das? Siehe http://rcrowley.org/articles/dependencies.html über die Verwendung von Chroot.
"Die Verwendung einer Chroot mit allen erforderlichen Bibliotheken und Abhängigkeiten könnte den Job erledigen. Gibt es das?" - Nun ja, aber Sie müssen es selbst einrichten, und dann können Sie natürlich keine Benutzerdateien aus der Chroot lesen/schreiben. Aber Sie könnten wahrscheinlich die Abhängigkeiten im gleichen Verzeichnis platzieren und/oder LD_LIBRARY_PATH in einem Start-Skript bearbeiten, das Ihre Haupt-App lädt. Aber müssen Sie wirklich neuere Bibliotheken verwenden? Es ist oft schwieriger als Ad-hoc-Updates wie diese. – Rup
Tatsächlich brauche ich nicht wirklich die Sicherheit, die chroot bietet. Betrachtet man jedoch die ldd-Ausgabe meiner Programme im SCL6-Kontext, sehe ich Bibliotheksabhängigkeiten wie /lib/ld-linux.so.2, die sich zwischen Debian und SCL6 unterscheiden können. Ich sehe auch eine Bibliothek linux-gate.so.1, die keinen bestimmten Pfad hat. Ich bin mir nicht einmal sicher, ob das Programm in einer Chroot-Umgebung laufen würde, da ich nicht weiß, wo ich diese Bibliothek ablegen soll. – chmike
Sie nicht. Linux-Gate ist eine Schnittstelle zum Kernel - es ist eine virtuelle Bibliothek und existiert nicht auf der Festplatte. ld-linux ist der Shared-Library-Loader (glaube ich) und auch ziemlich Standard. Jede dieser Bibliotheken, die direkt mit dem Kernel verbunden sind (libc denke ich auch), kann sich zwischen den Linux-Distributionen unterscheiden, da die Kernel unterschiedlich sein werden. Sie sollten nur in der Lage sein, die vorhandenen Bibliotheken zu verwenden. – Rup