Hallo Leute, ich hatte gerade einen stundenlangen Lauf, mein kleines C
Programm näherte sich der Vollendung. Doch jetzt geht die sqrt Funktion
nicht. Für dieses Bildschirmfoto muss ich mich entschuldigen, der Laptop
ist nicht mit dem Internet verbunden. Was mache ich falsch? math.h ,
studio.h und stdlib.h sind im ist/include Ordner. Der Rechner hat Linux
Mint, der Compiler heißt gcc. Alles was ich vorher gemacht habe hat
geklappt, ich brauche noch die sqrt Funktion und atan2. Ich bin nochmal
ganz von Anfang angefangen für die sqrt Funktion.
gcc sqrt.c -o sqrt
Die Fehlermeldung:
/tmp/cccy0www.o: In Funktion 'main':
sqrt.c:(.text+0x23): Nicht definierter Verweis auf 'sqrt'
collect2: error: ld returned 1 exit status
Jemand schrieb:> -lm zu den Compileroptionen hinzufügen. Mathebibliothek wird sonst> nicht gelinkt.
Klappt auch nicht.
Ich tippe: gcc sqrt.c -o -lm sqrt
gcc: error: sqrt: Datei oder Verzeichnis nicht gefunden
Karl der Käfer schrieb:> Jemand schrieb:>> -lm zu den Compileroptionen hinzufügen. Mathebibliothek wird sonst>> nicht gelinkt.>> Klappt auch nicht.>> Ich tippe: gcc sqrt.c -o -lm sqrt>> gcc: error: sqrt: Datei oder Verzeichnis nicht gefunden
Du D???, man liest sich die Compileroptionen erst mal durch bevor man
sie verwendet, insbesonders achtet man darauf, ob nach der Option
vielleicht noch ne [Pflicht]angabe folgt.
http://www.nsc.ru/cgi-bin/www/unix_help/unix-man?cc+1
1
-o file
2
Place output in file file. This applies regardless to whatever
3
sort of output GCC is producing, whether it be an executable
4
file, an object file, an assembler file or preprocessed C code.
Noch etwas:
printf kennt kein %lf
Für float und double gilt das einfache %f
Viel Implementierungen dulden es.
(ich hatte gerade einen Fall, wo das zum Absturz führte gcc unter
Windows)
Dirk B. schrieb:> Noch etwas:>> printf kennt kein %lf> Für float und double gilt das einfache %f> Viel Implementierungen dulden es.>> (ich hatte gerade einen Fall, wo das zum Absturz führte gcc unter> Windows)
Das liegt daran, daß float auf double erweitert wird, bevor es als
Parameter übergeben wird,es sei denn der Funktionsprototyp erwartet
float. Vergleiche mit ... bei printf().
BTW, bei AVR8 ist double identisch mit float, so daß man solche
Feinheiten nicht bemerkt.
Karl der Käfer schrieb:> Für dieses Bildschirmfoto muss ich mich entschuldigen, der Laptop> ist nicht mit dem Internet verbunden. Was mache ich falsch?
Trotz eines selbstleuchtenden Bildschirms versuchst du, auch die dunklen
Stellen (Buchstaben) durch ein Zusatzlicht aufzuhellen. Das ist
kontraproduktiv.
my2ct schrieb:> Karl der Käfer schrieb:> Für dieses Bildschirmfoto muss ich mich entschuldigen, der Laptop> ist nicht mit dem Internet verbunden. Was mache ich falsch?>> Trotz eines selbstleuchtenden Bildschirms versuchst du, auch die dunklen> Stellen (Buchstaben) durch ein Zusatzlicht aufzuhellen. Das ist> kontraproduktiv.
Oh, Entschuldigung, habe erst hinterher gemerkt, das der Handyblitz mit
auf das Bild wollte ;-)
Ich verspreche auch, in Zukunft denselben Fehler nicht nochmals zu
machen, sondern werde nach neuen Blödheiten Ausschau halten.
Karl der Käfer schrieb:> Ich verspreche auch, in Zukunft denselben Fehler nicht nochmals zu> machen, sondern werde nach neuen Blödheiten Ausschau halten.
Stell mal die Fehlermeldungen auf englisch (LANG&Co), dann googlen sie
sich einfacher...
Dirk B. schrieb:> Noch etwas:>> printf kennt kein %lf
Doch. Es nutzt nichts, schadet aber auch nicht. Aus dem Standard
(Abschnitt 7.21.6.1, Absatz 7 im Entwurf N2455) zum length modifier l:
"[…]has no effect on a following a, A, e, E, f, F, g, or G conversion
specifier."