Jak skompilować program C korzystający z math.h?

15

Mam problemy z plikiem nagłówkowym math.h i kiedy używam funkcji pierwiastka kwadratowego jak w sqrt(d). Ale mój kompilator tego nie obsługuje. Proszę o poinformowanie mnie o tym problemie.

Moja wersja Ubuntu to 2012.

shreya
źródło
2
Chociaż lubimy programować pytania - pytanie musi dotyczyć Ubuntu - czy możesz szczegółowo wyjaśnić, na czym polega problem - przykłady itp.?
fossfreedom
to jest jak sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... mój kompilator nie obsługuje tego polecenia
Shreya
1
odpowiedz, edytując swoje pytanie. Podaj przykłady kodu, jak się kompilujesz, wersję Ubuntu, wersję kompilatora, czy próbowałeś to zrobić na innym kompilatorze / dystrybucji. Co się stanie itp.?
fossfreedom
1
@shreya Pytania dotyczące problemów z napisanym kodem muszą opisywać konkretny problem - i zawierać prawidłowy kod do jego odtworzenia - w samym pytaniu. Zobacz SSCCE.org orientacyjna.
Braiam
4
Naprawdę nie sądzę, że to nie na temat. W wielu innych systemach operacyjnych, takich jak Windows, nie jest konieczne przekazywanie specjalnej opcji linkera do korzystania z biblioteki matematycznej w programach C. Nawet w niektórych systemach operacyjnych typu Unix standardowa implementacja biblioteki C tego nie wymaga. Jest to problem, z którym zmaga się wielu użytkowników po przejściu na systemy GNU / Linux, takie jak Ubuntu. Chciałbym, żeby pytanie było lepiej napisane, aby zawierało konkretny błąd - jeśli w końcu rozważymy ten temat, być może powinniśmy go edytować - ale to nie jest ogólne pytanie dotyczące programowania w C, jest to pytanie, jak używać gccw Ubuntu .
Eliah Kagan

Odpowiedzi:

25

Dołącz -lmna końcu gccpolecenia.

We wszystkich najnowszych wersjach GCC na systemach GNU / Linux, takich jak Ubuntu, kiedy korzystasz z biblioteki matematycznej, musisz jawnie do niej linkować. Nie jest automatycznie łączony z resztą standardowej biblioteki C.

Jeśli kompilujesz się w wierszu poleceń za pomocą polecenia gcclub g++, możesz to zrobić, umieszczając -lmna końcu polecenia .

Na przykład: gcc -o foo foo.c -lm

Eliah Kagan
źródło
5

Jeśli zamierzasz skompilować program C z biblioteką math.h w LINUX za pomocą GCC lub G ++, będziesz musiał użyć opcji –lm po komendzie kompilacji.

gcc xyz.c -o xyz -lm

Tutaj,

gcc to polecenie kompilatora (nazwa kompilatora)
xyz.c to nazwa pliku źródłowego.
-o jest opcją określającą plik wyjściowy.
xyz to nazwa pliku wyjściowego.
-lm jest opcją łączenia ponownie biblioteki matematycznej ( libm ).

więcej szczegółów tutaj znajduje się link zawierający pełny artykuł na jego temat.
Kompilowanie programu C z math.h w systemie Linux.

Mikrofon
źródło
Po poleceniu łączenia nie jest to polecenie kompilacji. (Przepraszam za dręczenie, ale prawidłowe wykonanie pomaga zrozumieć inne sytuacje).
mousomer