Portál AbcLinuxu, 13. července 2025 00:23
a pro jiné knihovny žádnou podobnou volbu nepotřebuji
Proč si to myslíte? Automaticky se linkuje pouze libc
a u g++
také libstdc++
.
Mimochodem, co je to "knihovna math.lm
"? Podle toho -lm
nejspíš myslíte libm
, ale není mi jasné, kde jste vzal ten název math.lm
.
math.h
potrebuješ preto, že potrebuješ nejakú funkciu - napr. sin()
. Manuálová stránka pre sin()
hovorí:
Link with -lm.
Funkcie deklarované v time.h
nepotrebujú žiadnu extra knižnicu, pretože sú implementované v runtime knižnici glibc - a tá sa pridáva automaticky.
math.h
nebo time.h
jsou hlavičkové soubory, které potřebujete při překladu, aby překladač znal deklaraci jednotlivých funkcí. Vlastní implementace, tj. definice těchto funkcí je pak v knihovně, tedy souboru libm.so
nebo libc.so
(při statickém linkování libm.a
resp. libc.a
), ten potřebujete při linkování. Funkce time()
a další deklarované v time.h
jsou v knihovně libc
(standard C library), která je linkována implicitně, zatímco funkce deklarované v math.h
jsou většinou v libm
, která automacky linkována není (stejně jako všechny ostatní).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.