mikrocontroller.net

Forum: Compiler & IDEs sqrt in C klappt nicht, warum


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Karl der Käfer (Gast)


Angehängte Dateien:

Bewertung
-2 lesenswert
nicht lesenswert
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

von Karl der Käfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Der Ordner heißt usr/include

von Jemand (Gast)


Bewertung
1 lesenswert
nicht lesenswert
-lm zu den Compileroptionen hinzufügen. Mathebibliothek wird sonst nicht 
gelinkt.

von Isolanporzellator (Gast)


Bewertung
7 lesenswert
nicht lesenswert
Ein Displaytext gewinnt durch einen Blitz keinen Kontrast!

von Karl der Käfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Karl der Käfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mit

gcc sqrt.c -lm -o sqrt


klappt es. Ganz vielen lieben Dank für deine Hilfe!!!

von Lerninstructor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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
       -o file
        Place  output in file file.  This applies regardless to whatever
        sort of output GCC is producing, whether  it  be  an  executable
        file,  an object file, an assembler file or preprocessed C code.


von Isolanporzellator (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Compileroptionen erst mal durch

Wenn es ein Lötkolben gewesen wär, hätte er jetzt Brandblasen!

Und die nicht am Hirn.

von Dirk B. (dirkb2)


Bewertung
2 lesenswert
nicht lesenswert
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)

von Carl D. (jcw2)


Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
von my2ct (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karl der Käfer (Gast)


Bewertung
2 lesenswert
nicht lesenswert
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.

von Georg A. (georga)


Bewertung
1 lesenswert
nicht lesenswert
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...

Beitrag #6166771 wurde vom Autor gelöscht.
von Philipp Klaus K. (Firma: Albert-Ludwigs-Universität) (pkk)


Bewertung
0 lesenswert
nicht lesenswert
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."

von Teddy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Isolanporzellator schrieb:
> Ein Displaytext gewinnt durch einen Blitz keinen Kontrast!

Die Kugel ist eine Genkidama.
Ist doch logisch.

von Pittiplatsch (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Die Kugel ist

x' + y' + z' = r

Und nichts anderes!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.