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

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

undefined reference to `sqrtl'

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

2
задан 1 December 2011 в 21:03

1 ответ

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

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

gcc test.c -lm

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

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

Спасибо за здесь за эту информацию.

1
ответ дан 25 May 2018 в 16:22
  • 1
    Это не новое требование, хотя я готов поверить, что в некоторых версиях toolchain была ошибка, которая спрятала его. Заказ ссылок всегда был критическим и всегда был источником путаницы пользователей. – ams 7 December 2011 в 15:21

Другие вопросы по тегам:

Похожие вопросы: