GNU/Linux >> Znalost Linux >  >> Linux

Chyba C++:nedefinovaný odkaz na 'clock_gettime' a 'clock_settime'

příklad:

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

Pro gcc verze 4.6.1, -lrt musí být po filefork.cpp jinak se zobrazí chyba odkazu.

Některé starší gcc verze se nestará o pozici.


Přidejte -lrt na konec příkazového řádku g++. Toto odkazuje na sdílenou knihovnu librt.so "Real Time".


Od verze glibc 2.17 je knihovna propojující -lrt již není vyžadováno.

clock_* jsou nyní součástí hlavní knihovny C. Můžete se podívat na historii změn glibc 2.17, kde byla tato změna provedena, vysvětluje důvod této změny:

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

Pokud se rozhodnete upgradovat glibc, můžete zkontrolovat sledování kompatibility glibc, pokud máte obavy, zda by při používání novějšího glibc nenastaly nějaké problémy.

Chcete-li zkontrolovat verzi glibc nainstalovanou v systému, spusťte příkaz:

ldd --version

(Samozřejmě, pokud používáte starý glibc (<2.17), budete stále potřebovat -lrt .)


Linux
  1. Chyba kompilace MPI:nedefinovaný odkaz na „sqrt“ – vyřešeno

  2. Centos 4.8 a Glibc 2.5?

  3. Trap, Err, A Echoing the Error Line?

  1. CodeBlocks – Free &Cross-platformní C, C++ a Fortran IDE

  2. Jak volat funkci C v C++, funkci C++ v C (Mix C a C++)

  3. Chyba Linux c++:nedefinovaný odkaz na 'dlopen'

  1. Závažná chyba:Volání nedefinované funkce curl_init()

  2. Použití sqrtf() v C:nedefinovaný odkaz na `sqrtf'

  3. nedefinovaný odkaz na symbol '[email protected]@GLIBC_2.4'