GNU/Linux >> LINUX-Kenntnisse >  >> Linux

C++-Fehler:Undefinierter Verweis auf „clock_gettime“ und „clock_settime“

Beispiel:

c++ -Wall filefork.cpp -lrt -O2

Für gcc Version 4.6.1, -lrt muss nach sein filefork.cpp Andernfalls erhalten Sie einen Link-Fehler.

Einige ältere gcc Version kümmert sich nicht um die Position.


Fügen Sie -lrt hinzu bis zum Ende der g++ Befehlszeile. Dies verlinkt in der gemeinsam genutzten Bibliothek librt.so "Real Time".


Seit Glibc-Version 2.17 ist die Bibliothek, die -lrt verknüpft ist nicht mehr erforderlich.

Die clock_* sind jetzt Teil der Haupt-C-Bibliothek. Sie können den Änderungsverlauf von glibc 2.17 sehen, wo diese Änderung vorgenommen wurde, erklärt den Grund für diese Änderung:

+* The `clock_*' suite of functions (declared in <time.h>) is now available
+  directly in the main C library.  Previously it was necessary to link with
+  -lrt to use these functions.  This change has the effect that a
+  single-threaded program that uses a function such as `clock_gettime' (and
+  is not linked with -lrt) will no longer implicitly load the pthreads
+  library at runtime and so will not suffer the overheads associated with
+  multi-thread support in other code such as the C++ runtime library.

Wenn Sie sich für ein Upgrade von glibc entscheiden, können Sie den Kompatibilitäts-Tracker von glibc überprüfen, wenn Sie Bedenken haben, ob es Probleme bei der Verwendung der neueren glibc geben würde.

Führen Sie den folgenden Befehl aus, um die auf dem System installierte glibc-Version zu überprüfen:

ldd --version

(Wenn Sie die alte glibc (<2.17) verwenden, benötigen Sie natürlich immer noch -lrt .)


Linux
  1. MPI-Kompilierungsfehler:undefinierter Verweis auf „sqrt“ – Gelöst

  2. Aufruf der undefinierten Funktion simplexml_load_file() – PHP-Fehler [Gelöst]

  3. Trap, Err und Echo der Fehlerlinie?

  4. CodeBlocks – Eine kostenlose und plattformübergreifende C-, C++- und Fortran-IDE

  5. Konfigurieren und Tunen von OpenVAS in Kali Linux

So kompilieren und führen Sie C- und C++-Programme unter Linux aus

Centos 4.8 und Glibc 2.5?

Erklärt:Eingabe-, Ausgabe- und Fehlerumleitung in Linux

undefinierter Verweis auf das Symbol „[email protected]@GLIBC_2.4“

Undefinierter Verweis auf Symbolfehler „_ZN5boost6system15system_categoryEv“.

Fehler bei Verwendung einer neueren Version von glibc