Je suis assez nouveau pour Ubuntu, mais je n'arrive pas à obtenir que cela fonctionne. Cela fonctionne bien sur les ordinateurs de mon école et je ne sais pas ce que je ne fais pas. J'ai vérifié sr/include et time.h y est 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 en tant que mon IDE pour générer et exécuter également. Toute aide serait formidable, merci.
Ajoutez -lrt
à la fin de la ligne de commande g ++. Ce lien dans la bibliothèque partagée "Real Time" de librt.so.
exemple:
c++ -Wall filefork.cpp -lrt -O2
Pour gcc
version 4.6.1, -lrt
doit être après filefork.cpp sinon vous obtenez une erreur de lien.
Une version plus ancienne gcc
ne se soucie pas de la position.
J'ai rencontré la même erreur. Ma commande de l'éditeur de liens avait la bibliothèque rt incluse -lrt
qui est correcte et qui fonctionnait pendant un certain temps. Après avoir réinstallé Kubuntu, il a cessé de fonctionner.
Un fil de discussion séparé a suggéré que le -lrt
devait venir après les fichiers d'objet du projet. Déplacer le -lrt
à la fin de la commande a corrigé ce problème pour moi bien que je ne connaisse pas les détails de la raison.
Depuis la version 2.17 de la glibc, la bibliothèque reliant -lrt
n'est plus requise.
Les clock_*
font maintenant partie de la bibliothèque C principale. Vous pouvez voir le historique des modifications de la glibc 2.17 l'emplacement où cette modification a été effectuée explique la raison de cette modification:
+* 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.
Si vous décidez de mettre à jour la glibc, vous pouvez alors vérifier le suivi de la compatibilité de la glibc si vous craignez que la nouvelle glibc ne pose pas de problème.
Pour vérifier la version de glibc installée sur le système, exécutez la commande suivante:
ldd --version
(Bien sûr, si vous utilisez l'ancienne glibc (<2.17), vous aurez toujours besoin de -lrt
.)