Implizite Deklaration der Funktion »itoa«. Ich finde den Fehler nicht.

Gast #4036545
Lesenswert?
• ▲
▼
Hallo,

ich finde den Fehler nicht. Ich versuche, ein kleines C-Programm zu 
kompilieren. Es soll den ADC auslesen und den Wert auf einem LCD 
ausgeben. Beim kompilieren (ich benutze Code::Blocks) erscheint folgende 
Fehlermeldung:

###Anfang Fehlermeldung###
-------------- Build: Debug in lcdtest1 ---------------

Compiling: main.c
main.c: In Funktion »main«:
main.c:27: Warnung: Implizite Deklaration der Funktion »itoa«
Linking console executable: bin/Debug/lcdtest1.elf
/usr/lib/gcc/avr/4.3.4/../../../avr/bin/ld: skipping incompatible 
/usr/lib/libm.so when searching for -lm
/usr/lib/gcc/avr/4.3.4/../../../avr/bin/ld: skipping incompatible 
/usr/lib/libm.a when searching for -lm
/usr/lib/gcc/avr/4.3.4/../../../avr/bin/ld: skipping incompatible 
/usr/lib/libc.so when searching for -lc
/usr/lib/gcc/avr/4.3.4/../../../avr/bin/ld: skipping incompatible 
/usr/lib/libc.a when searching for -lc
Output size is 12,96 KB
Running project post-build steps
avr-objcopy -O ihex -R .eeprom -R .eesafe bin/Debug/lcdtest1.elf 
bin/Debug/lcdtest1.elf.hex
avr-objcopy --no-change-warnings -j .eeprom --change-section-lma 
.eeprom=0 -O ihex bin/Debug/lcdtest1.elf bin/Debug/lcdtest1.elf.eep.hex
Process terminated with status 0 (0 minutes, 0 seconds)
1 errors, 0 warnings
###Ende Fehlermeldung###

Ich bin überzeugt, alle relevanten Dateien korrekt eingebunden zu haben. 
Was mich ebenfalls wundert, ist die immense Größe der erzeugten 
HEX-Datei von über 5 kB.
Angehängte Dateien:
Moderator #4036587
Lesenswert?
• ▲
▼
Die Suchpfade für Header-Files und Libraries zeigen fälschlicherweise
auf die Verzeichnisse /usr/include und /usr/lib, die für PC-Programme da
sind. Die erste Meldung wird ausgegeben, weil es im stdlib.h unter Linux
kein itoa gibt. Der Linker meckert, weil die Libraries im Objektformat
für x86 o.ä. statt für AVR sind.

Wenn der AVR-GCC und die AVR-Libc richtig installiert sind, sollte das
Programm ohne Warnungen bauen, es sei denn, du gibst die Pfade explizit
(mit -I und -L) falsch an.
Gast #4036751
Lesenswert?
• ▲
▼
J.-u. G. schrieb:
> "itoa" möchte als ersten Parameter einen Integer haben. Du hast
> "ergebnis" als "double" deklariert.

Ok. Habe ich korrigiert, hat allerdings keine Besserung gebracht.

Alexander F. schrieb:
> Ausführbarer Code gehört außerdem nicht in Header, sondern in Source
> Files.

Ich weiß. Müsste sich aber doch zum Testen trotzdem kompilieren lassen.

Alexander F. schrieb:
> Welches Betriebssystem verwendest du?

Momentan Ubuntu 10.04LTS

Yalu X. schrieb:
> Die Suchpfade für Header-Files und Libraries zeigen fälschlicherweise
> auf die Verzeichnisse /usr/include und /usr/lib, die für PC-Programme da
> sind. Die erste Meldung wird ausgegeben, weil es im stdlib.h unter Linux
> kein itoa gibt. Der Linker meckert, weil die Libraries im Objektformat
> für x86 o.ä. statt für AVR sind.

Danke! Das was es! Habe die Pfade auf das AVR-Verzeichnis gesetzt. Jetzt 
verschwindet auch die Fehlermeldung zur impliziten Deklaration. Wie 
kommt man denn auf so etwas? Ist es das, was man als Erfahrung 
bezeichnet oder habe ich irgendwo gepennt?
Moderator #4036858
Lesenswert?
• ▲
▼
Programmieranfängeranwärter schrieb:
> Habe die Pfade auf das AVR-Verzeichnis gesetzt. Jetzt verschwindet
> auch die Fehlermeldung zur impliziten Deklaration. Wie kommt man denn
> auf so etwas? Ist es das, was man als Erfahrung bezeichnet oder habe
> ich irgendwo gepennt?

Normalerweise solltest du für die Standardbibliothek und die zugehörigen
Header-Files überhaupt keine expliziten Pfade setzen müssen, da diese
schon im Compiler und Linker als Default einprogrammiert sind.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.