Domanda

Sono abbastanza nuovo a Ubuntu, ma io non riesco a farlo funzionare. Funziona bene sul mio computer della scuola e non so quello che non sto facendo. Ho controllato usr / include e time.h c'è proprio bene. Ecco il codice:

#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;
}

Sto usando CodeBlocks come il mio IDE per creare ed eseguire pure. Qualsiasi aiuto sarebbe grande, grazie.

È stato utile?

Soluzione

Aggiungi -lrt alla fine del g ++ riga di comando. Questo link nella librt.so "Real Time" libreria condivisa.

Altri suggerimenti

Esempio:

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

Per gcc versione 4.6.1, -lrt deve essere dopo filefork.cpp altrimenti si ottiene un errore di collegamento.

Alcuni versione gcc più vecchia non si preoccupa della posizione.

ho incontrato lo stesso errore. Il mio comando del linker ha avuto la biblioteca rt incluso -lrt che è corretto e che stava lavorando per un po '. Dopo aver ri-installazione Kubuntu ha smesso di funzionare.

Un thread separato forum ha suggerito la -lrt necessari per venire dopo che i file oggetto del progetto. Spostando il -lrt alla fine del comando risolto questo problema per me, anche se io non conosco i dettagli del perché.

Dal momento che glibc versione 2.17, il -lrt collega biblioteca non è più necessaria.

Il clock_* sono ora parte della libreria C principale. Potete vedere il rel="nofollow cambiare la storia di glibc 2.17 dove questo cambiamento è stato fatto spiega il motivo di questo cambiamento:

+* 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.

Se si decide di aggiornare glibc, allora è possibile controllare il compatibilità inseguitore di glibc se siete preoccupati se ci sarebbe eventuali problemi che utilizzano il glibc più recente.

Per verificare la versione glibc installata sul sistema, eseguire il comando:

ldd --version

(Naturalmente, se si sta utilizzando vecchia glibc (<2.17) allora si avrà ancora bisogno -lrt.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top