Что за магия (gcc) ?

программирование Linux

вот код http://paste.ubuntu.com/6124805/

$ gcc -o test test.c
/tmp/ccsjWXrX.o: In function `main':
test.c:(.text+0x30): undefined reference to `sin'
test.c:(.text+0x5a): undefined reference to `pow'
test.c:(.text+0x6c): undefined reference to `cos'
test.c:(.text+0x96): undefined reference to `pow'
test.c:(.text+0xfd): undefined reference to `pow'
test.c:(.text+0x14b): undefined reference to `pow'
test.c:(.text+0x199): undefined reference to `pow'
collect2: error: ld returned 1 exit status
$

$ gcc -o test test.c -O2
$ ./test
fi=0.346695
s=1.352372

О чудо, оно работает!!!

Примечание:
>> Чё тут непонятного

тогда почему работает при использовании оптимизации(O2)?

Примечание:
> ну a всетаки, есть у тебя в программе #include <math.h> или нет?

есть. Я же выложил ссылку на код

Примечание:
> С какой оптимизацией компилилось без указания -О2?

вообще без оптимизации
Ответы:
Что за хрень?
Чё тут непонятного - ты скомпилил только test.c в объектный файл. при этом сслыки указывают на имена, которых НЕТ в файле, оно они ЕСТЬ в библиотеке. То есть ты всего лишь получил ПРЕДУПРЕЖДЕНИЕ, и ничего кроме.
ну a всетаки, есть у тебя в программе #include <math.h> или нет?
С какой оптимизацией компилилось без указания -О2?


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.