CentOS 7: devtoolset-7 wurde installiert, aber GCC 7.8 verwendet die alten C ++ - Include-Dateien der GCC 4.8-Installation

711
Josh1billion

Ich versuche Pistache auf einem CentOS 7-Rechner zu kompilieren und zu installieren, indem ich deren Anweisungen befolge.

Dies ist ein Paket, das C ++ 11 erfordert. Da das Development Tools-Paket unter CentOS 7 eine alte Version von gcc (4.8.3) installiert, die keine C ++ 11-Funktionen unterstützt, habe ich devtoolset-7 installiert und es mit aktiviert scl enable devtoolset-7 bash. Dies scheint ordnungsgemäß als gcc --versionAnzeigen zu funktionieren gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5).

Wenn ich jedoch makedie Pistache-Quellen versuche, erhalte ich diesen Kompilierungsfehler:

/root/compiler_installation_script/pistache/src/server/router.cc:102:45: error: no matching function for call to ‘regex_replace(const string&, std::regex&, const char [2])’ SegmentTreeNode::multiple_slash, "/"); ^ /root/compiler_installation_script/pistache/src/server/router.cc:102:45: note: candidates are: In file included from /usr/include/c++/4.8.2/regex:62:0, 

Wenn ich kein Missverständnis habe, scheint dies darauf hinzuweisen, dass mein Compiler veraltete C ++ - Include-Header verwendet, die mit gcc 4.8.3 kompatibel sind, was zu dem Fehler führt. Wie kann ich das beheben?

Hinweis: Ich bin mir sicher, dass das Problem nicht bei Pistache selbst liegt, da ich dies gestern auf anderen Rechnern erfolgreich kompiliert habe, einschließlich eines neuen CentOS 7-Rechners.

0

1 Antwort auf die Frage

0
Josh1billion

Herausgefunden. cmakeIch habe eine alte Version von gcc / g ++ verwendet, nicht die, die meine Kommandozeile aufnahm, wenn ich gccoder g++ich selbst lief . Ich musste also CC und CXX in die entsprechenden Pfade exportieren, bevor ich cmake ausführen konnte.

export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ cmake3 -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .. 

Zuvor hatte ich nur die letzte Zeile oben ausgeführt.

Sie sollten den C- oder C ++ - Compilter (CC oder CXX) nicht exportieren müssen. Ich hatte devtoolset-7 für eine Weile in meiner CentOS 7-Maschine (ich habe auch GCC 8.2, das ich kompiliert habe), und ich musste die Compiler nach dem Ausführen von scl enable devtoolset-7 bash nie exportieren. Wenn Sie $ PATH `und $ LD_LIBRARY_PATH 'echo, erhalten Sie die Pfade zu den ausführbaren Dateien und Bibliotheken wie:` / opt / rh / devtoolset-7 / root / usr / bin`, `/ opt / rh / devtoolset-7 / root / usr / lib64` und `/ opt / rh / devtoolset-7 / root / usr / lib`? Nasir Riley vor 5 Jahren 0
@NasirRiley Ja, die devtoolset-7-Pfade werden angezeigt, wenn ich sowohl $ PATH als auch $ LD_LIBRARY_PATH auswähle. Ich frage mich, ob die Ursache etwas mit der Cmake-Konfiguration von Pistache zu tun hat. Josh1billion vor 5 Jahren 0
Ich habe gerade Pistache auf meiner CentOS 7.5-Maschine kompiliert, nachdem ich devtoolset-7 mit demselben Befehl aktiviert hatte, den Sie verwendet haben. Ich konnte denselben cmake3-Befehl wie Sie ausführen, mit dem einzigen Unterschied, dass ich -D CMAKE_INSTALL_PREFIX = `hinzugefügt habe, um ihn an anderer Stelle zu installieren. Es war fertig und dann lief ich "make" und "make install" ohne Probleme. Es sieht so aus, als ob in Ihrer Umgebung etwas schief läuft. Nasir Riley vor 5 Jahren 0
Ja, definitiv etwas Spezifisches für diese Box. Ich habe die gleichen Schritte mit einem anderen, frischen CentOS 7-Computer am anderen Tag gemacht und bin nicht auf das Problem gestoßen. Josh1billion vor 5 Jahren 0