Добрый день, всех с праздником. Вроде пишу простую прогу с использованием функции 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: Ожидается корректная линовка
gcc ./math.c -lm http://freesource.info/wiki/AltLinux/Sisyphus/devel/UpStream/AsNeeded
Проблема решена: http://www.linux.org.ru/view-message.jsp?msgid=2729273&nocache=-961368719#2730362 -lm надо ставить в конце, не понятно почему так, вроде раньше такого не встечал
(In reply to comment #2) > -lm надо ставить в конце, не понятно почему так, вроде раньше такого не встечал Комментарий #1 читать отказываемся принципиально?
уже всё прочитал, всем спасибо
первый комме5нт кстати мне на почту не пришёл, не баг случайно? а настройка очень жёсткая, очень ловко вывела меня в ступор
Вообще это не правильно! Есть ключ -lm, если его нельзя ставить вначале, то линкер должен хотябы ругнуться на его прекратить линковку! А то получается что он его корректно проглатывает, как будто бы всё нормально, но на самом деле не использует -lm и продолжает линковку как ни чём не бывало. Самостоятельно разобраться в причине ошибки практически не реально.
(In reply to comment #5) > первый комме5нт кстати мне на почту не пришёл, не баг случайно? Бесплатные почтовые сервисы славятся тем, что глотают почту из открытых проектов, ошибочно принимая её за спам.
(In reply to comment #6) > Есть ключ -lm, если его нельзя ставить вначале, то линкер должен хотябы > ругнуться на его прекратить линковку! А то получается что он его корректно > проглатывает, как будто бы всё нормально, А всё нормально. gcc a.c -lm b.c -lfoobar - вполне корректная ситуация. ps: перевесил на компонент gcc, дабы больше lav@ не спамить.
папочка спам - пустая, я имею ввиду не папочку почтового клиента, я захожу в почту через web сервис