amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > gcc und floating point funktionen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

06.04.2004, 21:12 Uhr

Inferno
Posts: 157
Nutzer
Hallöchen,

habe mal wieder ein gcc - Problem :)

ich habe folgendes mini-Programm:

---- test.cpp ----

#include <stdio.h>
#include <math.h>

int main() {
double a = 0.5;
double b = sin(a);
printf("Ergebnis: %fn", (float)b);
}

---- /test.cpp ----

wenn ich es mit

c++ -noixemul -o test test.cpp

übersetze, dann funktionierts.

wenn ich es nun mit

gcc -noixemul -o test test.cpp

übersetze, dann kriege ich die Fehlermeldung:

"/t/ccRj10SW.o(.text-0x30): undefined reference to 'sin'"

Auch ein -lm, und diverse lXXX haben nichts gebracht.

Hat jemand dieses Problem schon mal gelöst?

Gruß,

Inf.

[ - Antworten - Zitieren - Direktlink - ]

06.04.2004, 23:18 Uhr

Palgucker
Posts: 1342
Nutzer
Musste ich auch mal probieren und hatte das selbe Ergebnis. Aber wenn ich -noixemul und -lm benutze, dann klappts eigendlich. ohne -noixemul brauch es auch kein -lm.

mfg Palgucker

[ Dieser Beitrag wurde von Palgucker am 06.04.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

06.04.2004, 23:33 Uhr

Inferno
Posts: 157
Nutzer
Hi Palgucker.

Das Problem war die Reihenfolge. -lm muß unbedingt HINTER die object-files.

Danke,

Inf.

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 09:56 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Inferno:
Das Problem war die Reihenfolge. -lm muß unbedingt HINTER die object-files.

Das Problem ist das Frontend. Zum Linken immer das C++ Frontend verwenden, entweder c++ oder g++.

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 09:59 Uhr

_nexus_
Posts: 164
Nutzer
Gibt es eingetlich irgendwo Doku zu den Amiga-spezifischen Optionen des gcc? Welche gibts (neben z.B. -noixemul).

Und was tut "-lm" ?

Danke für eine Antwort, auch wenn die Frage möglicherweise Dumm ist?

nexus.
--
dye' em black!

http://www.net-eclipse.de ,
http://www.noize-magazine.de

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 10:07 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von _nexus_:

Und was tut "-lm" ?


Sagt dem Linker, das er die Mathe-Bibliotheken dazulinken soll. Da diese eher selten verwendet werden, spart sich der Linker im Default-Fall das "Nachschlagen" von externen Referenzen in den Mathe-Libs.

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 10:07 Uhr

Inferno
Posts: 157
Nutzer
Hi nexus,

-lXXX bedeutet, daß er die libXXX.a dazu linken soll
wenn Du -lm angibst, linkt er die libm.a dazu. Alternativ (oder zusätzlich) ginge also auch -lamiga -lgcc etc.

Was zusätzliche amiga-spezifischen Optionen angeht, mußt Du mal in eine der Dateien gucken, dort ist beschrieben, was geht. Außer -noixemul kenne ich aber auch keine.

Gruß,

Inf.

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 15:53 Uhr

tokai
Posts: 1071
Nutzer
Im gcc.guide (gg:guide/gcc.guide)

Invoking gcc ->
Option summary ->
Machine Dependent options

findet ihr eine komplette Auflistung aller 68k (oder auch PPC etc.) spezifischen Optionen.

regards,
tokai

--
http://www.christianrosentreter.com


IRC: #amiganews.de @ARCNET (e.g. de3.arcnet.vapor.com/ port 6667)

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 16:47 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Otokai:
Im gcc.guide (gg:guide/gcc.guide)

Invoking gcc ->
Option summary ->
Machine Dependent options

findet ihr eine komplette Auflistung aller 68k (oder auch PPC etc.) spezifischen Optionen.

Die Amiga-Spezifischen Optionen stehen da aber nicht. Die sind in gcc-amigaos.guide erklärt.

[ - Antworten - Zitieren - Direktlink - ]

07.04.2004, 17:04 Uhr

gni
Posts: 1106
Nutzer
Zitat:
nferno:
habe mal wieder ein gcc - Problem :)

Dokumentation lesen soll helfen.
Zitat:
---- test.cpp ----
Erster Fehler: Laut Suffix ist es eine C++ Datei, laut Inhalt aber C.
Das Frontend "gcc" wählt anhand des Suffixes den zu verwendenden Compiler. In dem Fall also the C++ Compiler. C Quellen verwenden ausschliesslich .c
Zitat:
c++ -noixemul -o test test.cpp

übersetze, dann funktionierts.

Das C++ Frontend (g++/c++) linkt automatisch gegen -lm -stdc++ (kann man gut mit -v sehen).
Zitat:
gcc -noixemul -o test test.cpp

übersetze, dann kriege ich die Fehlermeldung:

"/t/ccRj10SW.o(.text-0x30): undefined reference to 'sin'"

Hier wird der C Compiler benutzt und nicht mehr automatisch mit -lm gelinkt. libnix hat Mathe-Sachen in dieser Bibliothek. (ohne -noixemul sollte es ohne -lm gehen, da ixemul alles in der "normalen" libc.a hat.

[ Dieser Beitrag wurde von gni am 07.04.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > gcc und floating point funktionen [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.