Як скласти програму C, яка використовує math.h?


15

У мене виникають проблеми в файлі заголовка math.h і коли я використовую функцію квадратного кореня, як в sqrt(d). Але мій упорядник цього не підтримує. Будь ласка, порадьте мене щодо цієї проблеми.

Моя версія Ubuntu - 2012 рік.


2
Хоча ми любимо питання програмування - питання повинно бути пов'язане з Ubuntu - чи можете ви детально уточнити, у чому полягає проблема - приклади тощо?
fossfreedom

це як sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... мій компілятор не підтримує цю команду
shreya

1
будь ласка, відповідайте, редагуючи своє запитання. Наведіть приклади коду, як ви компілюєте, версію ubuntu, версію компілятора, чи намагалися ви це зробити в іншому компіляторі / дистрибутиві. Що відбувається тощо?
fossfreedom

1
@shreya Питання щодо проблем з написаним вами кодом повинні описувати конкретну проблему - і включати дійсний код для її відтворення - у самому запитанні. Для отримання інформації див. SSCCE.org .
Брайам

4
Я дійсно не вважаю це поза темою. У багатьох інших ОС, як-от Windows, не потрібно передавати спеціальний параметр лінкера для використання математичної бібліотеки в програмах C. Навіть у деяких операційних системах, схожих на Unix, цього не потребує стандартна реалізація бібліотеки С. Це проблема, з якою стикаються багато користувачів, коли вони переходять на такі системи GNU / Linux, як Ubuntu. Я хотів би, щоб питання було краще написане, щоб містити конкретну помилку - якщо ми закінчимо розглядати цю тему, то, можливо, ми повинні її відредагувати - але це не загальне питання програмування на С, це питання про те, як користуватися gccUbuntu .
Елія Каган

Відповіді:


25

Додайте -lmдо кінця своєї gccкоманди.

З усіма останніми версіями GCC в системах GNU / Linux, таких як Ubuntu, коли ви використовуєте математичну бібліотеку, ви повинні явно посилатися на неї. Він не пов'язаний автоматично з рештою стандартної бібліотеки С.

Якщо ви компілюєте в командному рядку команду gccабо g++, ви б це зробили, поставивши -lmв кінці команди .

Наприклад: gcc -o foo foo.c -lm


5

Якщо ви збираєтеся скласти програму C з бібліотекою math.h в LINUX за допомогою GCC або G ++, вам доведеться використовувати команду –lm після команди компіляції.

gcc xyz.c -o xyz -lm

Ось

gcc - команда компілятора (ім'я компілятора)
xyz.c - це вихідний файл.
-o - це можливість вказати вихідний файл.
xyz - це ім'я вихідного файлу.
-lm - це можливість зв’язати між собою математичну бібліотеку ( libm ).

Детальніше тут - посилання, що містить повну статтю про нього.
Компіляція програми C з math.h в Linux.


Після команди зв'язування, а не команди компіляції. (Вибачте, що виникла думка, але правильність допомагає зрозуміти інші ситуації).
мусомер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.