Portál AbcLinuxu, 4. listopadu 2025 20:56
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.