Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

trigonometry in Linux

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
ryabinkin
Гость





СообщениеДобавлено: Пт Июл 18 2003 21:25    Заголовок сообщения: trigonometry in Linux Ответить с цитатой

I have written the simplest program on C:

#include

int main(void)
{
sin(3.14e0/2e0);
return 0;
}

But during the compile I receive:
/tmp/cchTGMJE.o: In function `main':
/tmp/cchTGMJE.o(.text+0x14): undefined reference to `sin'
collect2: ld returned 1 exit status

Where is bug?
Linux RH 7.2 gcc 2.96
Вернуться к началу
Dmitry.Karpov http://prof
Гость





СообщениеДобавлено: Вс Июл 20 2003 14:48    Заголовок сообщения: Форум съел, что за недер ты инклюдишь. Надо math.h Ответить с цитатой

Очень полезно сделать
grep 'sin' /usr/include/*
и посмотреть, какие хедеры отвечают за синусы.

А может, надо указывать линкуемую библиотеку - опций не помню, читай 'man gcc'.
Вернуться к началу
ryabinkin
Гость





СообщениеДобавлено: Вс Июл 20 2003 17:38    Заголовок сообщения: Re: Форум съел, что за недер ты инклюдишь. Надо math.h Ответить с цитатой

Da, podkluchal math.h
i iskal vse vkhozhdeniya, tol'ko nemnogo ne tak:

find /usr/include -type f -exec grep -H '\bsin[a-z]*(' {} \; >> results
no nichego interesnogo:

/usr/include/freetype2/freetype/fttrigon.h: * the value of "vec.x" will be "sin(theta)", and the value of "vec.y"
/usr/include/tgmath.h:#define sin(Val) __TGMATH_UNARY_REAL_IMAG (Val, sin, csin)
/usr/include/tgmath.h:#define sinh(Val) __TGMATH_UNARY_REAL_IMAG (Val, sinh, csinh)
/usr/include/g++-v3/bits/std_cmath.h: sin(float __x)
/usr/include/g++-v3/bits/std_cmath.h: sin(long double __x)
/usr/include/g++-v3/bits/std_cmath.h: sinh(float __x) { return ::sinhf(__x); }
/usr/include/g++-v3/bits/std_cmath.h: sinh(float __x) { return ::sinh(static_cast(__x)); }
/usr/include/g++-v3/bits/std_cmath.h: sinh(long double __x) { return ::sinhl(__x); }
/usr/include/g++-v3/bits/std_cmath.h: sinh(long double __x) { return ::sinh(static_cast(__x)); }
/usr/include/g++-v3/bits/std_complex.h: template complex sin(const complex&);
/usr/include/g++-v3/bits/std_complex.h: template complex sinh(const complex&);
/usr/include/g++-v3/bits/std_complex.h: { return complex(__rho * cos(__theta), __rho * sin(__theta)); }
/usr/include/g++-v3/bits/std_complex.h: return complex(cos(__x) * cosh(__y), -sin(__x) * sinh(__y));
/usr/include/g++-v3/bits/std_complex.h: return complex(cosh(__x) * cos(__y), sinh(__x) * sin(__y));
/usr/include/g++-v3/bits/std_complex.h: sin(const complex& __z)
/usr/include/g++-v3/bits/std_complex.h: return complex(sin(__x) * cosh(__y), cos(__x) * sinh(__y));
/usr/include/g++-v3/bits/std_complex.h: sinh(const complex& __z)
/usr/include/g++-v3/bits/std_complex.h: return complex(sinh(__x) * cos(__y), cosh(__x) * sin(__y));
/usr/include/g++-v3/bits/std_complex.h: return sin(__z) / cos(__z);
/usr/include/g++-v3/bits/std_complex.h: return sinh(__z) / cosh(__z);
/usr/include/octave-2.1.34/octave/pt-plot.h: // command "plot sin(x), cos(x)" has two subplot commands.

Chto dal'she?
Вернуться к началу
Dmitry.Karpov http://prof
Гость





СообщениеДобавлено: Вс Июл 20 2003 20:10    Заголовок сообщения: А на каком этапе это выдается - компиляция, линкоавка или запуск? Ответить с цитатой

В math.h, судя по приведенному результату поиска, синуса нет. А загружает ли он синус? Надо смотреть, что инклюдит math.h и доходит ли это до tgmath.h или до другого хедера, содержащего определение синуса.

Ну а еще мне хотелось бы узнать, на каком этапе работы выдается ошибка. Судя по отсутствию номера строкИ, это происходит либо при линковке, либо во время выполнения. Возможно, системная библиотека не содержит математики, так что ее надо ставить отдельно. Или, возможно, надо статически линковать библиотеку к программе. Боюсь, что дальше я помочь не смогу, ибо рабротаю с FreeBSD.
Вернуться к началу
ryabinkin
Гость





СообщениеДобавлено: Вс Июл 20 2003 20:33    Заголовок сообщения: Re: А на каком этапе это выдается - компиляция, линкоавка или запуск? Ответить с цитатой

Esli ya pravil'no ponyal, to oshibka - eto oshibka etapa komponovki. Ne sozdaetsya ispolnyaemyi fail.

Samoe interesnoe, esli analogichnuyu programmu kompilit' g++, to vsey OK.

Tak gde zhe grabli????
Вернуться к началу
Борис
Гость





СообщениеДобавлено: Пн Июл 21 2003 11:01    Заголовок сообщения: Re: А на каком этапе это выдается - компиляция, линкоавка или запуск? Ответить с цитатой

-- Кто виноват? --
g++ (компилятор си++) и gcc (компилятор си), вероятно, используют разный набор библиотек по умолчанию. В твоем случае линковщик не находит в списке линкуемых модулей файл tgmath.o (или аналогичный).

-- Что делать? --
Поищи, в каком .c-файле содержится код функции sin(), и запиши его в командной строке вместе с твоей программой (gcc твоя-программа.c файл-с-синусом.c) или вставь в Makefile верным образом.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...