Мне тяжело достать gcc Ubuntu, чтобы понять функции long double
-манипуляции из math.h, а именно sqrtl
, cabsl
и cexpl
. Сообщение, которое я получаю для всех из них при компиляции, это
undefined reference to `sqrtl'
Есть ли какой-либо флаг, отличный от -lm
, который я должен поставить в командной строке для gcc, чтобы понять эти функции? Это недостающий пакет? Или это проблема с версией, которую я использую (4.6.1 на Oneiric)?
Проблема заключается в том, что аргументы переданы компилятору.
В Oneiric связанные имена библиотек должны быть вызваны после имени исходного файла:
gcc test.c -lm
Это изменение и причины для этого описаны более подробно здесь.
Проблема не возникает для функций постоянных значений, потому что gcc имеет встроенные версии из них. Таким образом, компиляция с -fno-builtin дает ту же ошибку, что и с переменной в аргументе.
Спасибо за здесь за эту информацию.