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

amiga-news.de Forum > Programmierung > GCC 2.95.3 und float [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

05.08.2004, 15:22 Uhr

Robinausdemwald
Posts: 36
Nutzer
Hallo!
Folgendes Programm...

#include <stdio.h>

int main() {
int i=5;
int a=2;

float fl = (float)i/a;

printf("Ergebnis: %f\n",fl);
}

habe ich mit dem GCC 2.95.3 und

gcc prog.c -o prog -noixemul -lm

kompiliert und läuft auch soweit auf meinem Pegasos2, A4000/040 und
A1200 mit MTec030 + FPU.

Das Problem liegt nun darin, dass das ganze auf nem 1200er mit
Blizzard 1230 ohne FPU bei der Division abstürzt ("Programmfehler
(Fehlernr. 8000000B)").

Ich vermute ja, dass die mangelnde FPU das Problem ist, habe dann auch
mal mit den verschiedenen GCC-Prozessor-Optionen (-m68000 usw.)
rumgespielt, aber geholfen hat bis jetzt nichts.

Hat da also jemand ne Idee, wo das Problem liegt?

Danke,
Robinausdemwald

[ - Antworten - Zitieren - Direktlink - ]

05.08.2004, 16:36 Uhr

thomas
Posts: 7716
Nutzer

Ich denke mal, -lm ist falsch. Du brauchst vermutlich ein -lmnofpu oder so ähnlich. Mußt halt schauen, welche Libs es gibt. Bei VBCC ist es z.B. -lmieee.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Antworten - Zitieren - Direktlink - ]

05.08.2004, 18:28 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
@thomas

Habe bei mir auch -lm und wenn ich hier bei WinUAE auf 020 noFPU stelle schmiert das nicht ab. Soweit ich sehe heissen alle Libs libm in dem lib Verzeichnis befinden sich aber Unterverzeichnise für FPU etc. d.h. man mus die wohl eher rüberkopieren.

Gruss

Darius

[ - Antworten - Zitieren - Direktlink - ]

05.08.2004, 21:07 Uhr

Robinausdemwald
Posts: 36
Nutzer
Danke erstmal für die Antworten, hat aber leider nichts geholfen.
Ich hab mal mehrere libs aus dem libnix-Ordner ausprobiert, ergab
alles aber keine Änderung (naja, mit den 68881-libs kam gleich beim
Programmstart ein "Benötige FPU"-Requester).
Richtig merkwürdig finde ich allerdings, dass

float fl = (float)5/2;

ohne Probleme läuft...

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 10:15 Uhr

gni
Posts: 1106
Nutzer
Zitat:
thomas:
Ich denke mal, -lm ist falsch.

Nein, das ist richtig. Die Mathebliothek heisst immer libm.a
Zitat:
Du brauchst vermutlich ein -lmnofpu oder so ähnlich.
Wenn man -m68881 nicht benutzt, dann wird eine NOFPU libm.a verwendet.
Zitat:
Bei VBCC ist es z.B. -lmieee.
Er verwendet aber den GCC, der ganz anders ist als VBCC ;-)

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 10:18 Uhr

gni
Posts: 1106
Nutzer
Zitat:
DariusBrewka:
@thomas
Habe bei mir auch -lm und wenn ich hier bei WinUAE auf 020 noFPU stelle schmiert das nicht ab. Soweit ich sehe heissen alle Libs libm in dem lib Verzeichnis befinden sich aber Unterverzeichnise für FPU etc. d.h. man mus die wohl eher rüberkopieren.

Um Himmelswillen, liesst denn niemand Dokumentation(en)? Lass bloss alle Bibliotheken wo sie sind. Das Frontend (gcc/g++) sagt dem Linker wo Bibliotheken gesucht werden sollen abhängig von den angegebenen Optionen -m680X0 und -m68881.

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 10:20 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Robinausdemwald:
Ich hab mal mehrere libs aus dem libnix-Ordner ausprobiert, ergab alles aber keine Änderung (naja, mit den 68881-libs kam gleich beim Programmstart ein "Benötige FPU"-Requester).

So muß es auch sein. Vermutlich sind Deine libnix Bibliotheken durcheinander geraten. Am besten alle nochmal installieren (aus einem temp Verzeichnis drüber kopieren sollte reichen)

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 11:44 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
@gni

du hast wohl Recht ist aber schon einige Jahre her wo ich das Zeug installieren müsste. War für mich aber eine schlussforderung, da er ja keine -68881 Option angegeben hatte.

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 15:17 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Robinausdemwald:
Richtig merkwürdig finde ich allerdings, dass

float fl = (float)5/2;

ohne Probleme läuft...

Was ist daran merkwürdig?
Für eine compile-time Konstante braucht man zur Laufzeit keine fpu.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 16:03 Uhr

Robinausdemwald
Posts: 36
Nutzer
Zitat:
Original von gni:
So muß es auch sein. Vermutlich sind Deine libnix Bibliotheken durcheinander geraten. Am besten alle nochmal installieren (aus einem temp Verzeichnis drüber kopieren sollte reichen)


Hab ich gemacht, hat auch nix geholfen. Hab auch mal schnell den GCC
von der GoldEd-Demo installiert, ergab aber auch dasselbe Ergebnis.
Keine Ahnung, was da bei mir nicht stimmt...

[ - Antworten - Zitieren - Direktlink - ]

06.08.2004, 16:07 Uhr

Robinausdemwald
Posts: 36
Nutzer
Zitat:
Original von Holger:
Was ist daran merkwürdig?
Für eine compile-time Konstante braucht man zur Laufzeit keine fpu.

Auch wieder wahr. Hätte ich auch gleich drauf kommen können...




[ - Antworten - Zitieren - Direktlink - ]

09.08.2004, 12:05 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Robinausdemwald:
Hab ich gemacht, hat auch nix geholfen. Hab auch mal schnell den GCC
von der GoldEd-Demo installiert, ergab aber auch dasselbe Ergebnis.
Keine Ahnung, was da bei mir nicht stimmt...

Also für eine einfache Division benötigt man keine link-Bibliothek, also kann man an den link-Optionen rumschrauben, so viel man will, es hat keinen Einfluß. Nur die target-CPU(FPU) zählt.
Was mir da eher durch den Kopf geht: auf dem Amiga haben viele Anwender die math-Bibliotheken durch fpu-only Versionen ersetzt, weil diese einen Geschwindigkeitsvorteil versprechen, dann benötigen aber zwangsläufig auch mit no-fpu übersetzte Programme eine FPU, weil sie ja genau diese Bibliotheken benutzen.
Vielleicht liegt da der Fehler.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

11.08.2004, 14:15 Uhr

Robinausdemwald
Posts: 36
Nutzer
Um den Thread abzuschliessen schnell des Rätsels Lösung: Es lag wohl
an einem Bug in der mathieeesingbas.library im 3.1er ROM, welcher
unter 3.0 bzw. mit FPU nicht auftritt...

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > GCC 2.95.3 und float [ - Suche - Neue Beiträge - Registrieren - Login - ]


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