Question

Je suis assez nouveau pour Ubuntu, mais je ne peux pas sembler obtenir ce travail. Il fonctionne très bien sur mes ordinateurs de l'école et je ne sais pas ce que je ne fais pas. J'ai vérifié usr / include et time.h est-il 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 mon IDE pour construire et exécuter aussi bien. Toute aide serait génial, je vous remercie.

Était-ce utile?

La solution

Ajouter -lrt à la fin de la ligne de commande de g. Ce lien dans le librt.so "Real Time" Bibliothèque partagée.

Autres conseils

exemple:

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

Pour la version 4.6.1 gcc, -lrt doit être après filefork.cpp sinon vous obtenez une erreur de lien.

Certains ancienne version de gcc ne se soucie pas de la position.

J'ai rencontré la même erreur. Ma commande éditeur de liens n'ont la bibliothèque rt inclus -lrt ce qui est correct et il travaillait pendant un certain temps. Après réinstallant Kubuntu, il a cessé de fonctionner.

Un fil de forum distinct suggéré le -lrt nécessaire pour venir après les fichiers objet du projet. Déplacement du -lrt à la fin de la commande fixe ce problème pour moi, bien que je ne connais pas les détails de pourquoi.

Depuis la version glibc 2.17, la bibliothèque reliant -lrt n'est plus nécessaire.

Les clock_* font désormais partie de la bibliothèque C principale. Vous pouvez voir le rel="nofollow changer l'histoire de la glibc 2.17 où ce changement a été fait, explique la raison de ce changement:

+* 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 à niveau glibc, vous pouvez vérifier le suivi de la compatibilité de glibc si vous êtes concernés s'il y aurait des problèmes en utilisant la glibc plus récente.

Pour vérifier la version glibc installé sur le système, exécutez la commande suivante:

ldd --version

(Bien sûr, si vous utilisez vieux glibc (<2.17), alors vous aurez toujours besoin -lrt.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top