Hallo Forum,
ich versuche ein eigene Library zu erstellen.
Leider klappt es nicht so richtig.
Ich bin in das Verzeichnis gegangen, wo sich meine Headerfile befindet.
Dort ist auch das c File. Im AVR Studio kann ich es kompilieren, wenn
ich es jedoch mit dem Befehl -gcc.exe -c -ggdb -O2 -o USART.o USART.c in
der Konsole versuche, erhalte ich Kompilierfehler.
Es sind die USART defines, die nicht erkannt werden und noch andere
Fehler, wie vergessene ";", jedoch kann ich es in AVR Studio
kompilieren.
Das ist der Befehl und ich befinde mich mit der Konsole im Verzeichnis.
Eugen Thorben schrieb:> erhalte ich Kompilierfehler.
dann fehlet vermutlich das define für den Prozessor. Woher soll denn der
GCC wissen für welchen Atmel das code sein soll?
Eugen Thorben schrieb:> ja, das kompiliere hat geklappt. Jedoch sagt die Konsole, dass es ar> nicht kennt?
ist ar denn da?
Es ist oft hilfreich die Fehlermeldung auch hier zu posten.
Eugen Thorben schrieb:> weiß jemand, wo ich es finde?
vermutlich hier
C:\WinAVR-20100110\avr32\bin\
> Ich weiß leider nicht, wie ich den inhalt vom command terminal kopiere
schon mal rechte maustaste versucht?
is ok, habs hingekriekt, hab ar.exe runtergeladen und ausgeführt. Denke
mal es hat geklappt. Wenn ich ls verwende im Verzeichnis wird mir eine
USART.o file angezeigt, aber keine USART.a
Es klappt nicht mit markieren und ctrl + c in der Konsole.
ey, irgendwie ist es zu kompliziert und klappt nicht.
Gibt es irgendeine Möglichkeit nicht immer die Header und C-Files in den
Explorer zu bringen, sondern, dass man es einfach mit "<>" inkludieren
kann?
Wenn ich nur header verwende und diese in den AVR include Ordner stopfe,
dann hab ich später das Problem, dass ich dann auch nur noch header
Files verwenden kann, wenn ich neue Funktionen schreibe. Mit c und
header Files gibt es multiple declaration, obwohl ich in der header mit
den funktions code "#indef #define #endif" habe.
Kennt jemand da eine Lösung?
Eugen Thorben schrieb:> Gibt es irgendeine Möglichkeit nicht immer die Header und C-Files in den> Explorer zu bringen, sondern, dass man es einfach mit "<>" inkludieren> kann?
was meinst du damit?
sorry, wenn ich mich nicht ganz korrekt ausgedrückt habe. Ich hab eine
USART.h und USART.c für bestimmte µC geschrieben, die ich verwende. Man
kann ja z. B., um io.h zu inkludieren <avr/io.h> schreiben. Um meine
USART.c zu verwenden, müssen beide Files in den Explorer mitgenommen
werden. Ich würde jedoch gerne einfach <USART.h> schreiben, ohne beide
Files immmer wieder mitzunehmen.
Man kann im include Ordner des Atmel Studio 6 dort USART.h, mit den
zugehörigen c-Code enthalten, die Header einfügen und <USART.h>
verwenden. Es wird jedoch problematisch, wenn ich USART.h in einer
Header z. B. inkludieren möchte. Das klappt leider nicht.
Total Assi, ehrlich gesagt.
Und das mit der command Konsole klappt auch nicht. Das wird alles zu
kompliziert.
Hoffe es ist verständlich, was ich meine.
Eugen Thorben schrieb:> Um meine> USART.c zu verwenden, müssen beide Files in den Explorer mitgenommen> werden. Ich würde jedoch gerne einfach <USART.h> schreiben, ohne beide> Files immmer wieder mitzunehmen.
die Header dabei brauchst du nicht im Explorer hinzuzufügen.
Selbst wenn du eine Lib baust, dann musst du im Projekt die lib
hinzufügen. Damit ist es wieder egal ob du die *.c oder die lib
hinzufügst.
Eugen Thorben schrieb:> Total Assi, ehrlich gesagt.
Warum verwendest du auch eine Programmiersprache aus den späten 70er
Jahren des vorigen Jahrhunderts.
Hast du dein #include schon mal mit "xxx.h" versucht?
Eugen Thorben schrieb:> Mit c und header Files gibt es multiple declaration, obwohl ich in der> header mit den funktions code "#indef #define #endif" habe.
Was soll das bewirken. Schon die erste Anweisung wird der Präprozessor
nicht verstehen.
Eugen Thorben schrieb:> Naja, mit <avr/io.h> oder <string.h> klappts doch auch, oder?>> Wieso kann ich es auch nicht so hinkriegen?
io.h sind nur defines. Da gibt es keine lib oder *.c Datei dafür,
string.h ist der der C-Standard lib die ist immer mit gelinkt.
Eugen Thorben schrieb:> mmh, das heißt arsch lecken und immer header und c mit in den explorer,> ja?
Header braucht du nicht
> voll unflexibel... ey
dann verwende ein makefile und stell es so ein das er immer alle *.c
Dateien verwendet.
Schreibst du jede Funktion in ein eigene Datei, sonst kann ich mir nicht
erklären das es für jemand ein Problem ist 2 klicks zu machen um eine
Datei hinzufügen.
Eugen Thorben schrieb:> Es klappt nicht mit markieren und ctrl + c in der Konsole.
Markieren und Return drücken. Wie lange verwendest Du schon Windows?
> mmh, das heißt arsch lecken und immer header und c mit in den explorer,> ja?
Nein. Das heißt den Arsch hochbekommen und die Dokumentation lesen.
Pack Deine Headerdateien in ein eigenes Verzeichnis und passe den
Includepfad Deines Compilers an.