Использование длинных двойных функций с gcc

Использование длинных двойных функций с gcc

У меня возникли трудности с тем, чтобы gcc Ubuntu понимал long doubleфункции манипулирования из math.h, а именно sqrtl, cabslи cexpl. Сообщение, которое я получаю для всех них при компиляции, следующее:

undefined reference to `sqrtl'

Есть ли какой-либо флаг, кроме того -lm, который я должен поставить в командной строке, чтобы gcc понял эти функции? Это отсутствующий пакет? Или это проблема с версией, которую я использую (4.6.1 на Oneiric)?

решение1

Проблема заключается в порядке передачи аргументов компилятору.

На Oneiric связанные библиотеки должны называтьсяпослеимя исходного файла:

gcc test.c -lm

Это изменение и его причины описаны более подробноздесь.

Проблема не возникает для функций константных значений, поскольку gcc имеет встроенные версии этих функций. Поэтому компиляция с -fno-builtinдает ту же ошибку, что и с переменной в аргументе.

СпасибоДжейсон Контиза эту информацию.

Связанный контент