Bug 15584 - линкер ругается на cos() , -lm не помогает
: линкер ругается на cos() , -lm не помогает
Status: CLOSED NOTABUG
: Sisyphus
(All bugs in Sisyphus/gcc)
: unstable
: all Linux
: P5 critical
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2008-05-09 20:51 by
Modified: 2008-05-10 15:00 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-05-09 20:51:24
Добрый день, всех с праздником.

Вроде пишу простую прогу с использованием функции cos() подключаю библиотеку для
линковки -lm , она вроде бы на месте в /lib/libm.so версия 2.5.1, если я
правильно понял. Однако линкер говорит, что не знает откуда взять cos()

вопрос - какую библиотеку надо подсовывать линкеру, чтобы он корректно линковал
прогу? Вроде раньше таких чудес не было?

Дистриб altlinux обновлённый sisyphus
Steps to Reproduce:
#include <stdio.h>
#include <math.h>

int main( void ) {

long double  a = 0, b = 0;

printf( "cos=%f\n", cos( a ) );

return( 0 );
}

gcc -lm ./math.c
Actual Results:  
/home/yan/tmp/cclkOCdt.o: In function `main':
math.c:(.text+0x53): undefined reference to `cos'
collect2: выполнение ld завершилось с кодом возврата 1


Expected Results:  
Ожидается корректная линовка
------- Comment #1 From 2008-05-09 21:01:14 -------
gcc ./math.c -lm

http://freesource.info/wiki/AltLinux/Sisyphus/devel/UpStream/AsNeeded
------- Comment #2 From 2008-05-10 13:05:47 -------
Проблема решена:
http://www.linux.org.ru/view-message.jsp?msgid=2729273&nocache=-961368719#2730362

-lm надо ставить в конце, не понятно почему так, вроде раньше такого не встечал
------- Comment #3 From 2008-05-10 13:30:20 -------
(In reply to comment #2)

> -lm надо ставить в конце, не понятно почему так, вроде раньше такого не 
встечал

Комментарий #1 читать отказываемся принципиально?
------- Comment #4 From 2008-05-10 13:36:22 -------
уже всё прочитал, всем спасибо
------- Comment #5 From 2008-05-10 13:41:22 -------
первый комме5нт кстати мне на почту не пришёл, не баг случайно?

а настройка очень жёсткая, очень ловко вывела меня в ступор
------- Comment #6 From 2008-05-10 13:46:53 -------
Вообще это не правильно!

Есть ключ -lm, если его нельзя ставить вначале, то линкер должен хотябы
ругнуться на его прекратить линковку! А то получается что он его корректно
проглатывает, как будто бы всё нормально, но на самом деле не использует -lm и
продолжает линковку как ни чём не бывало. Самостоятельно разобраться в причине
ошибки практически не реально.
------- Comment #7 From 2008-05-10 14:54:32 -------
(In reply to comment #5)
> первый комме5нт кстати мне на почту не пришёл, не баг случайно?

Бесплатные почтовые сервисы славятся тем, что глотают почту из открытых 
проектов, ошибочно принимая её за спам.
------- Comment #8 From 2008-05-10 14:55:55 -------
(In reply to comment #6)

> Есть ключ -lm, если его нельзя ставить вначале, то линкер должен хотябы
> ругнуться на его прекратить линковку! А то получается что он его корректно
> проглатывает, как будто бы всё нормально,

А всё нормально.

gcc a.c -lm b.c -lfoobar - вполне корректная ситуация.

ps: перевесил на компонент gcc, дабы больше lav@ не спамить.
------- Comment #9 From 2008-05-10 15:00:32 -------
папочка спам - пустая, я имею ввиду не папочку почтового клиента, я захожу в
почту через web сервис