Verwenden langer Double-Funktionen mit gcc

Verwenden langer Double-Funktionen mit gcc

Ich habe Schwierigkeiten damit, Ubuntus gcc dazu zu bringen, die long double-manipulierenden Funktionen aus math.h zu verstehen, nämlich sqrtl, cabslund cexpl. Die Meldung, die ich beim Kompilieren für alle von ihnen bekomme, ist

undefined reference to `sqrtl'

Gibt es noch ein anderes Flag, -lmdas ich in die Befehlszeile einfügen muss, damit gcc diese Funktionen versteht? Fehlt ein Paket? Oder ist das ein Problem mit der Version, die ich verwende (4.6.1 auf Oneiric)?

Antwort1

Das Problem liegt in der Reihenfolge, in der die Argumente an den Compiler übergeben werden.

Auf Oneiric müssen die verknüpften Bibliotheken aufgerufen werdennachder Name der Quelldatei:

gcc test.c -lm

Diese Änderung und die Gründe dafür werden im Folgenden näher beschrieben.Hier.

Bei Funktionen mit konstanten Werten tritt das Problem nicht auf, da gcc integrierte Versionen davon hat. Daher -fno-builtinführt das Kompilieren mit zum gleichen Fehler wie mit einer Variablen im Argument.

Danke fürJason Contifür diese Informationen.

verwandte Informationen