GNU/Linux >> Linux Esercitazione >  >> Linux

Errore C++:riferimento non definito a 'clock_gettime' e 'clock_settime'

esempio:

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

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

Alcuni gcc precedenti versione non si preoccupa della posizione.


Aggiungi -lrt alla fine della riga di comando di g++. Questo collega alla libreria condivisa "Real Time" di librt.so.


Dalla versione 2.17 di glibc, la libreria che collega -lrt non è più richiesto.

Il clock_* ora fanno parte della libreria C principale. Puoi vedere la cronologia delle modifiche di glibc 2.17 in cui è stata apportata questa modifica e spiega il motivo di questa modifica:

+* 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 decidi di aggiornare glibc, puoi controllare il tracker di compatibilità di glibc se sei preoccupato se ci sarebbero problemi usando il nuovo glibc.

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

ldd --version

(Ovviamente, se stai usando la vecchia glibc (<2.17) avrai ancora bisogno di -lrt .)


Linux
  1. Errore di compilazione MPI:riferimento non definito a `sqrt' – Risolto

  2. Chiamata alla funzione non definita simplexml_load_file() – Errore PHP [risolto]

  3. Come chiamare la funzione C in C++, la funzione C++ in C (mix di C e C++)

  4. Errore irreversibile:chiamata alla funzione non definita curl_init()

  5. C++ Boost:riferimento non definito a boost::system::generic_category()

Come compilare ed eseguire programmi C, C++ in Linux

Spiegazione:input, output e reindirizzamento degli errori in Linux

Utilizzo di sqrtf() in C:riferimento non definito a `sqrtf'

riferimento non definito al simbolo "[email protetta]@GLIBC_2.4"

riferimento indefinito al simbolo errore '_ZN5boost6system15system_categoryEv'

Errore durante l'utilizzo di una versione più recente di glibc