Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ использования sqrt

Автор: compiler 11.05.2008 19:06

Добрый день!
Вот вернулся к изучению Си, да возникают проблемы( Почему не компилируется программа?

#include <stdio.h>
#include <math.h>
int main(void){
int i = 169, j = 168;
printf(
"sqrt(%d)=%d, sqrt(%d)=%d",
i, (int)sqrt((double)i),
j, (int)sqrt((double)j)
);
return 0;
}

лог:
Код
compiler@hope:~/helloworld$ gcc a.c
/tmp/ccEdG7FC.o: In function `main':
a.c:(.text+0x41): undefined reference to `sqrt'
a.c:(.text+0x6b): undefined reference to `sqrt'
collect2: выполнение ld завершилось с кодом возврата 1

компилятор: gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)

заранее благодарен.

Автор: volvo 11.05.2008 19:30

Цитата
Почему не компилируется программа?
Потому что библиотека math не прилинкована...

Добавь -lm к команде компиляции...

Автор: compiler 11.05.2008 19:44

Цитата(volvo @ 11.05.2008 15:30) *
Добавь -lm к команде компиляции...
да спасибо, помогло...
Цитата(volvo @ 11.05.2008 15:30) *
Потому что библиотека math не прилинкована...
мда.. надо будет возвращаться к использованию какой-нибудь IDE..
зы
хотя интересно, выражение printf("%d\n",sqrt(9.0)); компилируется без подключения math, правда с предупреждением...
и printf("%d\n",M_PI); без прилинковки откомпилируется без предупреждений..
правда, все они будут работать не корректно.. но будут..
где можно прочитать про эти "феномены" подробней?