Portál AbcLinuxu, 13. července 2025 00:23


Dotaz: gcc -lm

6.7.2007 14:06 nina
gcc -lm
Přečteno: 506×
Odpovědět | Admin
Ahoj, učím se C a nějak nechápu, proč pro knihovnu math.lm musím v gcc použít volbu -lm a pro jiné knihovny žádnou podobnou volbu nepotřebuji. Jak poznám pro kterou ano a proč tomu tak je?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.7.2007 14:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: gcc -lm
Odpovědět | | Sbalit | Link | Blokovat | Admin
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.

6.7.2007 14:17 nina
Rozbalit Rozbalit vše Re: gcc -lm
math.h, překlepla jsem se.

Když dám #include <math.h> tak musím použít volbu -lm, jinak to nefunguje. Když dám třeba #include <time.h>, nic podobného použít nemusím. Jaký je v tom systém?
6.7.2007 14:32 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: gcc -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.
6.7.2007 17:44 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: gcc -lm
Soubory 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í).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.