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
.)