amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > GCC 2.95.3 und float [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2004-08-05, 15:22 h

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

#include <stdio.h>

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

float fl = (float)i/a;

printf("Ergebnis: %fn",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

[ - Answer - Quote - Direct link - ]

2004-08-05, 16:36 h

thomas
Posts: 7718
User

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/

[ - Answer - Quote - Direct link - ]

2004-08-05, 18:28 h

DariusBrewka
Posts: 899
[Banned user]
@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

[ - Answer - Quote - Direct link - ]

2004-08-05, 21:07 h

Robinausdemwald
Posts: 36
User
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...

[ - Answer - Quote - Direct link - ]

2004-08-06, 10:15 h

gni
Posts: 1106
User
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 ;-)

[ - Answer - Quote - Direct link - ]

2004-08-06, 10:18 h

gni
Posts: 1106
User
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.

[ - Answer - Quote - Direct link - ]

2004-08-06, 10:20 h

gni
Posts: 1106
User
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)

[ - Answer - Quote - Direct link - ]

2004-08-06, 11:44 h

DariusBrewka
Posts: 899
[Banned user]
@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.

[ - Answer - Quote - Direct link - ]

2004-08-06, 15:17 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2004-08-06, 16:03 h

Robinausdemwald
Posts: 36
User
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...

[ - Answer - Quote - Direct link - ]

2004-08-06, 16:07 h

Robinausdemwald
Posts: 36
User
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...




[ - Answer - Quote - Direct link - ]

2004-08-09, 12:05 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2004-08-11, 14:15 h

Robinausdemwald
Posts: 36
User
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...

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > GCC 2.95.3 und float [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.