Ubuntu Linux C ++ - Fehler: undefinierter Verweis auf 'clock_gettime' und 'clock_settime' [c++]


Answers

Beispiel:

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

Für die -lrt Version 4.6.1 muss -lrt nach filefork.cpp stehen, andernfalls wird ein Link-Fehler angezeigt .

Einige ältere gcc Versionen interessieren sich nicht für die Position.

Question

Ich bin ziemlich neu bei Ubuntu, aber ich kann es nicht funktionieren lassen. Es funktioniert gut auf meinen Schulcomputern und ich weiß nicht, was ich nicht mache. Ich habe usr / include und time.h überprüft, ist es gut. Hier ist der Code:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    timespec time1, time2;
    int temp;
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
    //do stuff here
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
    return 0;
}

Ich verwende CodeBlocks als meine IDE, um auch zu bauen und zu laufen. Jede Hilfe wäre großartig, danke.




Seit glibc 2.17 wird die Bibliothek, die den -rt nicht mehr benötigt.

Die clock_* ist jetzt Teil der Haupt-C-Bibliothek. Sie können die Änderungshistorie von glibc 2.17 sehen, wo diese Änderung vorgenommen wurde, um den Grund für diese Änderung zu erklären:

+* 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 entscheiden, glibc zu aktualisieren, können Sie den Kompatibilitätstracker von glibc überprüfen, wenn Sie Bedenken haben, ob Probleme mit der neueren glibc auftreten könnten.

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

ldd --version

(Natürlich benutzt du altes glibc (<2.17), dann brauchst du noch -lrt .)