Verständnisprobleme / Installieren CDT
-
Hi!
Erstmal das Vorgeplänkel:
Mein Wissensstand geht gegen null, ich möchte erreichen, dass ich meinen Programm zum ansteuern des Parallelports nutzen kann und verstehen was da falsch läuft, ich habe versucht Informationen über mein Problem zu sammeln, aber leider mit keiner zufriedenstellender Lösung, desweiteren nutze ich Ubuntu Feisty Fawn und Eclipse mit CDT.Ich wollte dieses Tutorial nacharbeiten:
http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html
Habe mir dann den Quelltext kopiert und in Eclipse eingefügt:
http://logicallimit.ath.cx/~bchristi/Bildschirmfoto.png
Zunächst hatte ich das Problem dass#include <asm/io.h>
nicht gefunden wurde, was ich jetzt mühsam aus einem meiner linux-header rauskopiert habe, so dass es jetzt funktioniert.
Ich verstehe die Fehlermeldungen nicht - ich habe immerhin nicht mehr als ein "Hello World!"-Programm geschrieben.Was bedeutet implizite Deklaration?
Was sind das für Fehler in Zeilen die gar nicht in der .c-Datei auftauchen?Gruß
KoenigGunther
-
Das "asm" scheint der Compiler als ein reserviertes Wort zu erkennen.
Exit ist in <process.h> oder <stdlib.h> deklariert.
-
proggingmania schrieb:
Das "asm" scheint der Compiler als ein reserviertes Wort zu erkennen.
Der Editor, nicht der Compiler.
Das Problem könnte sein, dass du asm/io.h "mühsam" irgendwoher kopiert hast. Dass es dabei um das gleiche asm/io.h handelt, von dem hier die Rede ist, halte ich mal für zumindest fragwürdig.
Letztlich würde ich empfehlen, das Programm mal wie im Tutorial angegeben mit dem gcc zu compilieren, um Seiteneffekte durch Eclipse auszuschließen.
KoenigGunther schrieb:
Was bedeutet implizite Deklaration?
Die Warnungen kommen daher, dass du die zu den Funktionen gehörenden Header nicht eingebunden hast. Das war vor langer Zeit in C so üblich.
-
Bashar schrieb:
...
Der Editor, nicht der Compiler.
...Ok, einigen wir uns auf Editor und Compiler ?
Der Editor zeigt es an und der Compiler ist fürs Meckern zuständig.( Mal n büschen Erbsen zählen heute ... büschen Pfennigfuchsen
)
-
Wo siehst du, dass der Compiler sich über asm beschwert?
-
Nirgends, man könnte zumindest eine Warnmeldung oberhalb von Zeile 10 im Debugfenster vermuten, allerdings läßt sich das im Bild schlecht hoch scrollen.
-
proggingmania schrieb:
Das "asm" scheint der Compiler als ein reserviertes Wort zu erkennen.
hä? wenn du die Fehlermeldungen liest, dann wirst du erkennen, dass /usr/incude/asm/io.h gelesen wurde. Was zwischen Anführungszeichen oder < > beim include kommt, ist dem Compiler egal, weil 'asm/io.h' an dieser Stelle ist nur für den Präprozessor wichtig, damit er die Datei lädt. Der Editor ist blöd und erkennt nicht, dass asm an dieser Stelle nur ein Teil des Pfades ist, er sollte nicht asm nicht so färben.
@KoenigGunther: für mich sieht es so aus, als wären deine linux headers nicht in Ordnung. Hast du die aktuellen linux-header installiert? Eventuell installiere dir die developer PAkete für Kernel Entwicklung und benutze das, was unter /usr/src/linux/ mitgeliefert wird. Und ein #include <stdlib.h> solltest du schon machen.
-
Danke für die Antworten!
Ich denke inzwischen dass es mit einer Art Pfadvariable zusammenhängt, denn in /usr/include liegt von Natur aus keine io.h...
In /usr/src/linux-headers* dagegen schon...Wenn ich das Programm mit gcc aufrufe passiert genau das gleiche wie mit Eclipse.
-
Also, ich konnte es kompilieren. Wie gesagt, vielliecht liegt es an deinen linux-headers Paket.
-
Das scheint ganz der Fall zu sein, wenngleich das auch ziemlich komisch ist, da ich meine alle nötigen Dateien installiert zu haben.