Ich versuche, die neueste Boost-Bibliothek (1.62.0) auf einem Linux-System mit Kernelversion 2.6.18-92.1.13.el5 (von uname -r
) und dem Intel C++-Compiler 2016 mit gcc 6.1.0 zu kompilieren.
Der neue Intel C++-Compiler und GCC sind in einem Unterverzeichnis meines Home-Verzeichnisses installiert. Ich verwende eine alte glibc, die wahrscheinlich so alt ist wie der Kernel ( ldd --version
gibt an ldd (GNU libc) 2.5
).
Ich erhalte den folgenden Fehler für das Thread-Modul:
In file included from libs/log/src/event.cpp(31):
/usr/include/linux/futex.h(96): error: identifier "u32" is undefined
long do_futex(u32 *uaddr, int op, u32 val, unsigned long timeout,
^
Das ist der einzige Fehler in der gesamten Zusammenstellung.
Ich kann keinen neuen Kernel auf dem Computer installieren, da ich keinen Root-Zugriff habe.
Ist es eine gute Idee, den neuesten Linux-Header zu installieren? Kann ich damit Boost 1.62.0 installieren, ohne den Fehler zu erhalten?
Antwort1
Im ersten Hinweis habe ich folgendes gefunden:
CentOS 5.2 wird mit Boost 1.33.1 ausgeliefert
Wenn Sie auf diesem Hacker-Ansatz bestehen, müssen Sie dieArchivierte Versionen steigern, und suchen Sie nach Version 1.33.1. Beachten Sie jedoch das Veröffentlichungsdatum:
Version 1.33.1
5. Dezember 2006 12:00 GMT
Nachdem Sie die Version heruntergeladen haben, die über yum installiert werden sollte, erstellen Sie sie in Ihrem Home-Verzeichnis. Aktualisieren Sie Ihre GCC-Version nicht. Aufgrund des Alters Ihres Systems sind die Tools, die Sie installieren möchten, durch das Alter Ihrer veralteten Toolchain eingeschränkt.
In jedem System, das einen Paketmanager hat, sollte der PaketmanagerNIEMALS BEHINDERT WERDEN. Sie sollten ein Betriebssystem-Upgrade in Betracht ziehen. Siehe dieakzeptierte Antwort hier. Sie sollten Ihre Header-Dateien nicht aktualisieren, bis Sie Ihren Kernel aktualisieren, und Sie können den Kernel nicht aktualisieren, bis yum
er wiederhergestellt ist.