Forum: Mikrocontroller und Digitale Elektronik eigene library erstellen


von Eugen T. (der_eugen_thorben)


Lesenswert?

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.
1
C:\WinAVR-20100110\avr32\bin\gcc.exe -c -ggdb -O2 -o USART.o USART.c


Danke :D

von Peter II (Gast)


Lesenswert?

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?

von Eugen T. (der_eugen_thorben)


Lesenswert?

ja, das kompiliere hat geklappt. Jedoch sagt die Konsole, dass es ar 
nicht kennt?

Ich geb folgendes in die Konsole ein:
1
ar -rcs USART.a USART.o

von Peter II (Gast)


Lesenswert?

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.

von Eugen T. (der_eugen_thorben)


Lesenswert?

Ich verstehe auch wieso. ich muss natürlich die ar exe mit verzeichnis 
angeben...


weiß jemand, wo ich es finde?


vielen dank

von Eugen T. (der_eugen_thorben)


Lesenswert?

Ich weiß leider nicht, wie ich den inhalt vom command terminal kopiere

von Peter II (Gast)


Lesenswert?

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?

von Eugen T. (der_eugen_thorben)


Lesenswert?

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.

von Eugen T. (der_eugen_thorben)


Lesenswert?

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?

von Peter II (Gast)


Lesenswert?

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?

von Eugen T. (der_eugen_thorben)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von Werner M. (Gast)


Lesenswert?

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?

von Eugen T. (der_eugen_thorben)


Lesenswert?

Naja, mit <avr/io.h> oder <string.h> klappts doch auch, oder?

Wieso kann ich es auch nicht so hinkriegen?

von Werner M. (Gast)


Lesenswert?

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.

von Eugen T. (der_eugen_thorben)


Lesenswert?

Ich meinte damit, dass multiple includes verwmieden werden.
 Ich habs nicht zu Ende geschrieben, sondern nur angerissen

von Peter II (Gast)


Lesenswert?

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.

von Eugen T. (der_eugen_thorben)


Lesenswert?

mmh, das heißt arsch lecken und immer header und c mit in den explorer, 
ja?

voll unflexibel... ey

von Peter II (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Eugen T. (der_eugen_thorben)


Lesenswert?

rufus, danke, hast recht, das ist die beste lösung.


cool danke :D

von Eugen T. (der_eugen_thorben)


Lesenswert?

p. s. bin mac user :D :D :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.