#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 — вы должны указать библиотеки, которые определяют функции для всех из них, компилятор не будет искать их для вас.