Je suis assez nouveau sur Ubuntu, mais je n'arrive pas à faire fonctionner cela. Cela fonctionne bien sur les ordinateurs de mon école et je ne sais pas ce que je ne fais pas. J'ai vérifié usr / include et time.h est là très bien. Voici le 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;
}
J'utilise CodeBlocks comme IDE pour construire et exécuter également. Toute aide serait formidable, merci.
-D_XOPEN_SOURCE=600
aussi. Voir aussi GCC avec -std = c99 se plaint de ne pas connaître la structure timespec .Réponses:
Ajoutez
-lrt
à la fin de la ligne de commande g ++. Ce lien dans la bibliothèque partagée librt.so "Real Time".la source
C
... qu'est-ce que cela-lrt
fait?g++ -o main -lrt main.cpp
ne fonctionne pas pour moi-lrt
aprèsmain.cpp
- l'ordre des bibliothèques partagées compte - voir ceci ou cela pour plus de détailsexemple:
Pour la
gcc
version 4.6.1,-lrt
doit être après filefork.cpp sinon vous obtenez une erreur de lien.Certaines
gcc
versions plus anciennes ne se soucient pas de la position.la source
-lrt
ne pas être dans la bonne position me causait un mal de tête. Y a-t-il une motivation pour ce cadre fou (enfin, beaucoup disent criminel)?*.o
arguments, les fonctions de bibliothèque sont ignorées à moins qu'elles ne soient référencées précédemment, ce qui signifie, à gauche.Depuis la version 2.17 de la glibc, la liaison de bibliothèque
-lrt
n'est plus nécessaire.Ils
clock_*
font désormais partie de la bibliothèque C principale. Vous pouvez voir l' historique des modifications de la glibc 2.17 où cette modification a été effectuée explique la raison de cette modification:Si vous décidez de mettre à niveau la glibc, vous pouvez vérifier le suivi de compatibilité de la glibc si vous êtes préoccupé par le fait qu'il y aurait des problèmes avec la nouvelle glibc.
Pour vérifier la version de la glibc installée sur le système, exécutez la commande:
(Bien sûr, si vous utilisez l'ancienne glibc (<2.17), vous en aurez toujours besoin
-lrt
.)la source
J'ai rencontré la même erreur. Ma commande de l'éditeur de liens avait la bibliothèque rt incluse,
-lrt
ce qui est correct et cela fonctionnait pendant un certain temps. Après avoir réinstallé Kubuntu, il a cessé de fonctionner.Un fil de discussion distinct du forum a suggéré le
-lrt
nécessaire pour venir après les fichiers objets du projet. Déplacer le-lrt
à la fin de la commande a résolu ce problème pour moi bien que je ne sache pas en détail pourquoi.la source