Ich bin ziemlich neu in Ubuntu, aber ich kann nicht scheinen, dass dies funktioniert. Es funktioniert gut auf meinen Schulcomputern und ich weiß nicht, was ich nicht tue. Ich habe usr / include und time.h überprüft . 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 IDE zum Erstellen und Ausführen. Jede Hilfe wäre toll, danke.
-D_XOPEN_SOURCE=600
auch. Siehe auch GCC mit -std = c99 beschwert sich darüber, dass die Strukturzeitangabe nicht bekannt ist .Antworten:
Am
-lrt
Ende der g ++ - Befehlszeile hinzufügen. Dieser Link befindet sich in der gemeinsam genutzten Bibliothek "Real Time" von librt.so.quelle
C
... was macht das-lrt
?g++ -o main -lrt main.cpp
nicht bemerkt habe, aber könnten Sie das in einem vollständigen Beispiel verwenden? Etwas wie funktioniert bei mir nicht-lrt
nachmain.cpp
- Reihenfolge der gemeinsam genutzten Bibliotheken Angelegenheit zu setzen - siehe dies oder das für weitere DetailsBeispiel:
Für
gcc
Version 4.6.1-lrt
muss nach filefork.cpp sein, sonst erhalten Sie einen Linkfehler .Einige ältere
gcc
Versionen kümmern sich nicht um die Position.quelle
-lrt
dass ich Kopfschmerzen hatte, weil ich nicht in der richtigen Position war. Gibt es irgendeine Motivation für diese verrückte (viele sagen kriminelle) Einstellung?*.o
Argumenten, werden die Bibliotheksfunktionen ignoriert, es sei denn, sie wurden zuvor referenziert, dh links.Seit glibc Version 2.17 ist die Bibliotheksverknüpfung
-lrt
nicht mehr erforderlich.Sie
clock_*
sind jetzt Teil der Hauptbibliothek C. In der Änderungshistorie von glibc 2.17, in der diese Änderung vorgenommen wurde, wird der Grund für diese Änderung erläutert: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 bei Verwendung des neueren glibc Probleme auftreten könnten.
Führen Sie den folgenden Befehl aus, um die auf dem System installierte glibc-Version zu überprüfen:
(Wenn Sie altes glibc (<2.17) verwenden, benötigen Sie es natürlich noch
-lrt
.)quelle
Ich habe den gleichen Fehler festgestellt. In meinem Linker-Befehl war die RT-Bibliothek enthalten,
-lrt
die korrekt ist und eine Weile funktioniert hat. Nach der Neuinstallation von Kubuntu funktionierte es nicht mehr.Ein separater Forenthread schlug
-lrt
vor, nach den Projektobjektdateien zu kommen. Das Verschieben-lrt
des Befehls an das Ende des Befehls hat dieses Problem für mich behoben, obwohl ich nicht genau weiß, warum.quelle