pow и lround (из math.h) не работают в solaris

#c #solaris

#c #solaris

Вопрос:

Я пишу и внедряю тест на простоту Миллера-Рабина. Я считаю, что я реализовал это правильно, но я не могу заставить свой C-код компилироваться в solaris. Код отлично компилируется в OS X и Debian, но я получаю ошибки связывания в solaris. Когда я пытаюсь связать свою программу, я получаю следующие ошибки:

 gcc -Wall prime.o -o prime
Undefined                       first referenced
 symbol                             in file
pow                                 prime.o
lround                              prime.o
  

Я включаю stdio.h, stdlib.h и math.h. Кто-нибудь знает, в чем может быть проблема? Я знаю, что в solaris вам иногда нужно ссылаться на дополнительные библиотеки, может ли это быть проблемой?

Ответ №1:

Вам нужно связать с -lm . Попробуйте:

 gcc -Wall prime.o -o prime -lm
  

По этому поводу также есть C FAQ.

Ответ №2:

Ссылка на математическую библиотеку с использованием флага -lm

Ответ №3:

Разобрался. Мне нужно было связать с -lm .

Комментарии:

1. Макс, пожалуйста, воздержись от воспалительных выражений. Это неконструктивно. Я отметил этот ответ.

2. Не знаю, нужно ли это отмечать, но Solaris действительно прекрасная ОС.

3. Solaris здесь ничем не отличается от любой другой ОС Unix или Linux — вы должны указать библиотеки, которые определяют функции для всех из них, компилятор не будет искать их для вас.