-         

Seite 1 von 7 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 63

Thema: So wird die Asuro-LIB installiert und in Betrieb genommen /3

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018

    So wird die Asuro-LIB installiert und in Betrieb genommen /3

    Anzeige

    Hallo zusammen,
    da es hier im Forum doch immer wieder zu Fragen zur Installation und Inbetriebnahme der Asuro-LIB kommt, habe ich hier mal versucht alles 'am Stück' zu beschreiben.
    Die Beschreibung bezieht sich vor allem auf Window-Rechner, ist aber auch grundsätzlich für Unix-Systeme gültig.

    Ich werde bei der Beschreibung bei 'Adam und Eva' anfangen, damit vor allem das Verständnis was überhaupt beim Erzeugen und Nutzen einer Library passieren muss, einmal erklärt wird.

    Für wenn dies meiner Meinung nach interessant ist:
    - Anfänger, die bisher immer mit GUI's und kompletten Entwicklungsumgebungen arbeiten.
    - Fortgeschrittene Asuro-LIB'erianer, die die LIB zwar nutzen, aber noch Fragen haben.
    - Profis, damit sie mir bei Beschreibungsfehlern auf die Finger hauen.


    Nun zur Lib und dem 'Durcheinander':
    Code:
    Viel Verwirrung entsteht dadurch, dass nicht bekannt ist, dass das Erzeugen und Nutzen einer Library aus verschiedenen Blickwinkeln zu betrachten ist.
    
    Es gibt DREI Richtungen in die wir sehen müssen:
    1: Die Umgebung zum übersetzen (WinAVR)
    2: Die Asuro-LIB (im Forum erarbeitet, von m.a.r.v.i.n zusammengestellt/verwaltet)
    3. Deine Asuro-Programme
    
    
    ----------------------
    Richtung 1: ---> Hier ist das Kompilierungs-System untergebracht.
    Dies wird von der Asuro-CD installiert.
    Vor allem findest du hier den Compiler avr-gcc.exe
    Dieses Verzeichnis müssen wir beide jetzt erst einmal finden. (du kennst es bestimmt schon.)
    Ich habe auf meiner WinXP-Kiste ab 'Arbeitsplatz' nach avr-gcc.exe gesucht.
    Ich habe als Antwort für avr-gcc.exe den Pfad:
    C:\Programme\Meine\Prog\AVR-Win\bin
    bekommen. Das \bin vergessen wir nun ganz schnell.
    Der Rest --> C:\Programme\Meine\Prog\AVR-Win <-- ist erst einmal nur interessant.
    (bei dir garantiert anders, und darf auch auf D oder E oder sonst wo sein)
    ----> Das Verzeichnis heißt nun GCC-HOME
    
    
    ----------------------
    Richtung 2: ---> Hier gibt es 2 Möglichkeit zur Installation:
    2a: Die Datei AsuroLib-v270rc3-Setup.exe (Kurz: Setup-Version)
    2b: Die Datei AsuroLib-v270rc3.zip       (Kurz: ZIP-Version)
    
    Die Setup-Version schlägt C:\ASURO_SRC\AsuroLib als Installationsverzeichnis vor.
    Bei der ZIP-Version kannst du einfach ein Verzeichnis auswählen. (Der Rest gilt für beide Versionen)
    HOFFENTLICH hast du NICHT das Verzeichnis GCC-HOME zur Installation angegeben.
    Dann wäre nun das Verzeichnis GCC-HOME\lib eine 'Müllkippe', da sowohl das WinAVR und auch die Asuro-LIB dann ihre Dateien da gespeichert haben.
    Weitere betroffene Verzeichnisse wären:
    GCC-HOME\examples
    GCC-HOME\doc
    Wenn du die Asuro-LIB also in GCC-HOME installiert hast, dann lass es so wie es ist.
    KEINESFALLS die Lib deinstallieren, da mit Sicherheit diese Verzeichnisse komplett gelöscht werden und somit auch die Dateien aus unserem GCC-HOME weg wären.
    Wenn du doch schon deinstallieren möchtest, musst du sicherheitshalber WinAVR und natürlich die Asuro-LIB neu installieren.
    Wenn du die Lib nicht deinstallieren möchtest, reicht es sie noch mal neu zu installieren. (Aber bitte dann nicht GCC-HOME angeben)
    Bei mir ist die Lib also unter C:\ASURO_SRC\AsuroLib und
    ----> dieses Verzeichnis heißt nun LIB-HOME
    
    
    ----------------
    Richtung 3: ---> Alle deine Programme
    Im Prinzip ist es egal wo diese Dateien liegen. Aber eben nur im Prinzip. (Böses Prinzip)
    Da kommen wir noch drauf zurück und vergeben erst einmal
    -----> den Namen PROG-HOME
    
    
    
    Uff, jetzt haben wir erst einmal sortiert.
    
    Nun ein bisschen davon, was wir wollen.
    Eigentlich wollen wir nur die Asuro-LIB übersetzen können, um z.B. geänderte Werte aus LIB-HOME\lib\inc\myasuro.h zu 'aktivieren'.
    Wo kommt dies Datei her?  ---> Aus der Asuro-LIB. Also müssen wir die LIB übersetzen. <---
    Was aber passiert da eigentlich?
    FAST alle C-Dateien im Verzeichnis LIB-HOME\lib werden mit dem DORT vorhandenen Makefile übersetzt und zu der Datei libasuro.a zusammengebaut.
    Einige diese C-Dateien holen nun über #include "myasuro.h" die Infos aus der Datei myasuro.h und holen sich auf DIESEM WEG die von dir eingetragenen Werte.
    Genau an dieser Stelle werden diese Werte schon FEST in der LIB-Datei libasuro.a 'eingebaut'.
    Es MUSS somit immer in diesem Verzeichnis LIB-HOME\lib und LIB-HOME\lib\inc editiert werden. NIE woanders, wenn du etwas an der Asuro-LIB ändern willst.
    Du weißt nun auch, dass myasuro.h zur Asuro-LIB gehört und NICHT zu deinen Programmen.
    
    
    Noch hast du aber damit kein eigenes Programm übersetzt.
    Dafür gibt es nun das ZWEITE Makefile in deinen Programmverzeichnissen, die irgendwo unter PROG-HOME liegen.
    Ein dort liegende Makefile sorgt nun dafür, dass vor allem deine C-Dateien übersetzt werden.
    Es übersetzt aber (leider) auch noch die Datei asuro.c aus dem Verzeichnis LIB-HOME\lib und deshalb wirst du nach dem übersetzten in deinem PROG-HOME\dein-Unterverzeichnis immer Dateien finden die asuro.? heißen. (Lass sie einfach da liegen, das ist aktuell so OK)
    
    Nach dem Übersetzen deiner Programme kommt der große Augenblick, dass die fehlerfrei übersetzten Dateien noch gelinkt werden müssen, damit alles zusammengebaut ist, um endlich dein Programm als ???.hex zu erhalten.
    Genau hier beim Linken, wird nun auch die libasuro.a zu deinem Programm hinzugefügt.
    Dies alles erledigt das Makefile im PROG-HOME\dein-Unterverzeichnis mit einem Aufruf von make.
    Im Makefile sind Befehle vorhanden, die *.c-Dateien in *.o-Dateien übersetzen.
    Und eben der Linkerbefehl, der dann alle *.o und alle benötigten *.a (Ja, auch die libasuro.a) zu einem *.hex zusammenbaut.
    
    
    
    Jetzt also haben wir über DEN UMWEG der übersetzten Asuro-LIB auch die Information aus der myasuro.h in deinem Programm.
    Ich hoffe, dass jetzt erst einmal das Prinzip klarer geworden ist.
    
    
    Für Raucher nun eine Zigarettenpause. Die anderen arbeiten weiter ;-)
    
    
    
    
    
    Wir haben die ganze Zeit nichts vom Verzeichnis GCC-HOME gehört. Das holen wir nun nach.
    
    In deinen Programmen baust du ja immer ein #include <asuro.h> ein. (Es sollten wirklich die <> sein. So aus Prinzip, weil die Datei nun aus dem GCC-HOME geholt werden soll.)
    Wo muss denn die Datei sein, damit sie auch vom Compiler gefunden wird?
    Ist eigentlich einfach, da der Compiler ein 'Lieblingsverzeichnis' hat.
    Dies ist das Verzeichnis: GCC-HOME\avr\include
    -> Nicht verwechseln mit: GCC-HOME\include
    
    Und auch der Linker muss wissen, wo er die LIB-Datei libasuro.a finden kann.
    Dies weiß der Linker auch von ganz alleine, wenn man die libasuro.a an 'die richtige' Stelle kopiert hat. Ist eben ein weiteres 'Lieblingsverzeichnis'.
    Dies ist das Verzeichnis: GCC-HOME\avr\lib
    -> Nicht verwechseln mit: GCC-HOME\lib
    
    
    ----> Trommelwirbel <------
    Jetzt ist erst einmal klar, was mit übersetzten der Lib gemeint ist, und wo denn alle Dateien hin müssen.
    
    
    
    Nun kommen die Änderungen in den (JA Mehrzahl) Makefile’s:
    
    --------------------
    LIB-HOME\lib\Makefile
    Oh Mist aber auch. Die Datei ist nicht vorhanden! Keine Panik.
    Mit der Setup-Version von  m.a.r.v.i.n  es gibt nur die Datei Makefile.orig.
    KOPIERE diese Datei einfach nach Makefile, und schon ist sie vorhanden.
    m.a.r.v.i.n wusste ja, dass man in der Datei etwas 'fummeln' muss, und hat deshalb kein 'Original' mitgegeben.
    Also: Erst einmal Makefile.orig KOPIEREN nach Makefile
    P.S.: In der ZIP-Version ist schon eine Kopie vorhanden. (Warum? Keine Ahnung)
    
    
    In diesem Makefile suchen und ändern wir nun folgendes:
    -1-> Suche:  DIRAVR = c:/winavr
    ---> Ändern: DIRAVR = GCC-HOME
    Bei mir also C:/Programme/Meine/Prog/AVR-Win (Bitte den / tatsächlich benutzen.)
    
    -2-> Suche:  DIRINC = .
    ---> Ändern: DIRINC = $(DIRAVR)/avr/include
    Achtung: Da ist tatsächlich ein Punkt hinter dem = Der muss weg.
    
    -3-> Suche:  HEADER = asuro.h
    ---> Ändern: HEADER = *.h
    
    -4-> Suche:  cp inc/$(HEADER) $(DIRINC)/$(HEADER)
    ---> Ändern: cp inc/$(HEADER) $(DIRINC)
    ACHTUNG: vor dem 'cp' sind KEINE Leerzeichen. ES MUSS EIN TAB-ZEICHEN BLEIBEN! SONST GEHT NICHTS MEHR!
    
    
    Erklärung zu:
    -1- Aus diesem Grund hat m.a.r.v.i.n das Makefile als Makefile.orig
         mitgegeben. Hier kann er ja nicht wissen, wo du dein winavr als
         GCC-HOME installiert hast.
    
    -2- Fehlerbehebung: Das Ziel für die asuro.h soll ja in dem
         'Lieblingsverzeichnis' vom GCC-HOME liegen.
    
    -3- Optimierung: Es sind mittlerweile ja schon einige Header-Dateien für
         die Asuro-LIB unter LIB-HOME/inc abgelegt. Also macht es auch Sinn, dass
         alle Header in das 'Lieblingsverzeichnis' kopiert werden. Dafür der *
    
    -4- Jetzt müssen die unter -3- angegeben Dateien noch in das
         Lieblingsverzeichnis kopiert werden.
         Bei einer einzelnen Datei (asuro.h) ging der alte Befehl noch.
         Bei mehreren Dateien (*.h) dürfen wir nur das Zielverzeichnis angeben.
    
    
    -----------------
    PROD-HOME\dein-Unterverzeichnis\Makefile
    Hier nehmen wir erst einmal ein Makefile als Muster aus LIB-HOME\examples\EncoderTest und KOPIEREN es nun in unser Verzeichnis PROD-HOME\dein-Unterverzeichnis.
    Auch in diesem Makefile müssen wir suchen und ändern.
    
    Let's go:
    -1-> Suche:  TARGET = test
    ---> Ändern: TARGET = folgelinie
    Dies ist NUR dann notwendig, wenn du deine Datei 'Haupt-C-Datei', die mit dem main() drin, geändert hast nach folgelinie.c  (Ist nur der Vollständigkeit erklärt. Es kann ja mal vorkommen, dass man nicht immer test.hex-Dateien haben möchte. Ist für dich aber bestimmt nichts Neues.)
    
    -2-> Suche:  SRC += asuro.c
    ---> Ändern: SRC += asuro.c linienlesen.c linienauswerten.c
    Auch dies ist NUR notwendig, wenn du deine Programme in verschiedenen Source-Dateien verteilt hast. (Wird später im Leben mal interessant. Aber seltenst beim Asuro.)
    Hier ist auch der Grund, warum du nach dem übersetzten, in deinem Verzeichnis die oben angesprochenen Dateien asuro.? bekommst. Schließlich wird hiermit die Datei asuro.c übersetzt.
    Und wie findet der Compiler die Datei asuro.c?
    Mit dem gleich kommenden VPATH
    
    -3-> Suche:  CFLAGS = -g -O$(OPT) -I../../lib/inc\
    ---> Ändern: CFLAGS = -g -O$(OPT) \
    ACHTUNG: der \ am Ende der Zeile ist auch wieder SEHR WICHTIG. Fehlt er: AUCH HIER GEHT DANN NICHTS MEHR!
    
    -4-> Suche:  VPATH=../../lib
    ---> Ändern: VPATH=LIB-HOME/lib
    
    Die beiden Änderungen -3- und -4- sind der Grund, warum ich oben vom 'bösen Prinzip' sprach.
    Durch diese, nun ausgetauschte, Konstruktion, hat m.a.r.v.i.n (oder es war schon immer so in den Makefile's drin.) FESTGELEGT, dass es leider nicht erlaubt ist, die eigenen Programme irgendwo auf deiner Festplatte zu speichern.
    Mit -3- lösen wir jetzt das Problem der Header-Dateien (z.b. #include <asuro.h>), aber noch nicht das Problem mit der zu übersetzenden asuro.c.
    Bei -3- lassen wir einfach das make-Kommando  -I[Pfadangabe] weg. Von nun an sucht der Compiler nur noch in seinem Lieblingsverzeichnis für Header-Dateien. Da wir aber schon alle Header-Dateien aus LIB-HOME/lib/inc nach GCC-HOME/avr/include kopiert haben (oben mit dem Makefile aus LIB-HOME/lib), werden sie nun auch dort gefunden.
    -4- löst das Problem, dass die Datei asuro.c nun auch gefunden werden kann, ohne dass du dein PROG-HOME an die 'richtige' Stelle auf deiner Festplatte legen musst.
    
    Diese Makefile kann nun für alle deine selbst geschriebenen Projekte unter PROG-HOME benutzt werden. Du brauchst nun höchstens noch bei -1- oder -2- Anpassungen zu machen.
    
    
    
    Und zu guter letzt: Wie ruft man am besten ein make auf?
    Mit der guten alten DOS-Shell (so mache ich es)
    
    START / Programme / Zubehör / Eingabeaufforderung (Sollte da wohl sein)
    
    Aufs Laufwerk wechseln zum Laufwerksbuchstaben von LIB-HOME mit dem c:[Enter]
    cd LIB-HOME\lib[Enter]
    make-lib[Enter]
    
    ----> Jubel, Jubel.
    Die Asuro-LIB ist übersetzt. Und alle notwendigen Dateien sind auch in die richtigen Lieblingsverzeichnisse unter GCC-HOME kopiert worden.. (hoffentlich)
    
    
    Und nun noch die eigenen Programme:
    Das hast du ja raus, denke ich.
    
    
    
    Uff, das war’s.
    Gruß Sternthaler
    
    
    P.S.: Falls weitere Fragen auftauchen, Frag einfach.
    Lest es euch in Ruhe durch. Es darf auch 2- oder 3-mal sein, da es ja möglicherweise nicht ganz einfach zu verstehen ist.
    Ich bin sicher, dass danach einige (alle?) Fragen geklärt sind.
    Viel Erfolg.

    Zum downloaden habe ich diesen Text als eigene Datei angehängt.


    Linkliste: [Ergänzt am 28.11.2007]
    Hier geht es zur Asuro-LIB V2.70
    [NEU] Hier geht es zur Asuro-LIB V2.71
    Hier geht es zum Programm zur Ermittlung der myasuro.h-Werte
    Folgendes beschreibt die <> und "" beim #include
    [NEU] M1.R konfiguriert im AVRStudio
    [NEU] m.a.r.v.i.n's Lösungsvorschlag für das AVRStudio
    [NEU] m.a.r.v.i.n's AsuroWiki-Seite mit dem Beitrag zum AVRStudio
    Angehängte Dateien Angehängte Dateien
    Lieber Asuro programieren als arbeiten gehen.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo,

    @sternthaler Hallo Christof, melde mich aus dem Urlaub zurück. Tolle Doku.

    @all hier noch zur Ergänzung ob man Headerdateien mit <> oder "" einbinden sollte. Wem der Unterschied nicht klar ist, sollte sich erst mal diesen Abschnitt aus dem RN-Wissen durchlesen:
    http://www.roboternetz.de/wissen/ind...r-gcc#Includes

    Im nach hinein muß ich feststellen, dass es keine sehr schlaue Idee von mir war, die Asuro Lib ins Compiler Verzeichnis zu kopieren. Das wird mit der nächsten Version wieder geändert. Die Lib bleibt besser lokal im AsuroLib Ordner, ebenso die Headerdatei asuro.h.

    Die Compiler Option
    Code:
    -I../../lib/inc
    im Makefile bewirkt, das der Compiler Anwendungsspezifische Headerdateien aber auch AVR und Standard Headerdateien zuerst in dem Verzeichnis ../../lib/inc suchen soll. Deshalb ist es auch egal, ob man
    Code:
    #include "asuro.h"
    oder
    Code:
    #include <asuro.h>
    schreibt. Das war mir vorher auch nicht so klar gewesen.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo m.a.r.v.i.n,
    da also hast du gesteckt. Urlaub! Ich hoffe, du bist gut erholt und kannst mit ganzer Kraft wieder am Asuro werkeln

    damaltor fragt an, ob du in deinem Thread zur Asuro-LIB einen Link hier hin legen kannst.
    Ich nehmen jedenfalls deinen Link zur Asuro-Wissen#Includes mal mit in den ersten Beitrag. (Ist ein sehr guter Tip.)

    Tolle doku? Na mal abwarten, was unter Unix und bei der Benutzung vom AVR-Studio noch so alles dazu kommen muss. Trotzdem: Dein Wort geht mir wie Honig runter

    Zu deiner Anmerkung, dass du die *.h und libasuro.a nicht mehr in's GCC-HOME kopieren möchtest, sollte man einfach eine Shell-Vaiablen neu im PROG-HOME/../Makefile 'erfinden':
    ASURO_LIB = c:/schlag_mich_tot/asurolib/lib

    und die beiden folgenden anpassen zu:
    CFLAGS = -g -O$(OPT) -I$(ASURO_LIB)/inc -I. \
    und
    VPATH=$(ASURO_LIB)/lib

    CFLAGS bekommt mit dem ersten -I den Weg zu asuro.h und das zweite -I zeigt in mein eigens Verzeichnis für lokale Header.
    Aber wie war das nochmal mit dem Suchpfad für den Linker, um die libasuro.a zu finden? Wenn es VPATH wäre, dann müsste sie ja gar nicht nach GCC-HOME/... kopiert werden, weil die jetztigen Makefiles aus den PROG-HOME's mit VPATH ja schon genau in's LIB-HOME/lib zeigen.
    Lieber Asuro programieren als arbeiten gehen.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo sternthaler,

    naja gut erholt kann man nicht gerade sagen. Leider.

    Zu deiner Anmerkung, dass du die *.h und libasuro.a nicht mehr in's GCC-HOME kopieren möchtest, sollte man einfach eine Shell-Vaiablen neu im PROG-HOME/../Makefile 'erfinden':
    ASURO_LIB = c:/schlag_mich_tot/asurolib/lib

    und die beiden folgenden anpassen zu:
    CFLAGS = -g -O$(OPT) -I$(ASURO_LIB)/inc -I. \
    und
    VPATH=$(ASURO_LIB)/lib
    so etwa hatte ich mir das auch gedacht.
    Den Pfad zur AsuroLib stellt man dann so ein:
    Code:
    LDFLAGS += -L$(ASURO_LIB)/lib
    VPATH dient nur dazu, das der Compiler nach C-Files auch im Lib Ordner zu suchen (asuro.c wird ja weiterhin als C-File benötigt, und ist nicht in der AsuroLib drin).

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    muss mich gerade korrigieren: hier gehört natürlich uch ein llink hin, ich meinte jedoch den thread "wichtige downloads und dateien" ganz oben im forum.



    was bedeutet eigentlich das /2 im titel?
    kleinschreibung ist cool!

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    @damaltor
    Jetzt kann ich nicht so ganz folgen. Wo soll welcher Link hin? Frage: Muss ich was tun?

    Das /2 habe ich mal mal bewusst reingehackert, um zu zeigen, dass ich oben im Beitrag eine Änderung gemacht habe. Ist zwar 'nur' der Link von m.a.r.v.i.n zur include-Doku, aber wie sonst kann man zeigen, dass hier eine Änderung erfolgt ist, ohne einen neuen Beitrag á la 'Hey, schaut mal im ersten Beitrag nach, da gibts's was Neues' zu posten.
    Ich glaube, dass du mal geschrieben hast, wenn ein bestehender Beitrag editiert wird, gibt es keine Mails an die Beteiligten. So kann man aber sehen das was passiert ist.
    War nur so eine Idee von mir. Bei dir hat es ja geklappt Wenn was dagegen spricht, lasse ich das natürlich.
    Lieber Asuro programieren als arbeiten gehen.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2007
    Ort
    Iffeldorf
    Beiträge
    14
    Hallo zusammen

    Super das du dir die Arbeit machst Sternthaler. =D> Ich melde mich jetzt mal als ein Vertreter der Anfaenger Kategorie. Ich habe mir jetzt mal deine Doku durchgelesen und versucht so viel wie moeglich zu verstehen. Ich habe zwar bis jetzt die neue Asuro Lib verwendet (das dachte ich jedenfalls), aber viele deiner Schritte sind bei mir nicht vorgekommen.
    Bitte alles was ich sage nicht als Kritrik verstehen, denn ich finde es super, dass du endlich Klarheit in die Sache bringen willst. Bloß manchmal waere es fuer uns Anfaenger leichter manche Sachen noch ein bischen ausfuehrlicher erklaert zu bekommen.
    Ich habe wie ich die Asuro-Lib installiert habe nur die AsuroLib-v270rc3-setup.exe ausgefuehrt. Danach lief alles eigentlich wunderbar. Ich habe mein Programm mit den bei Programmers Notepad vorgefertigten Makes compiliert und es lief auch alles ganz wudnerbar. Der Asuro hat gemacht was er sollte.
    Deshlab verwirren mich einige Sachen die du in deiner Doku geschrieben hast.
    Du hast auf der ersten Seite unten geschrieben:

    HOFFENTLICH hast du NICHT das Verzeichnis GCC-HOME zur Installation angegeben.
    Dann wäre nun das Verzeichnis GCC-HOME\lib eine 'Müllkippe', da sowohl das WinAVR und auch die Asuro-LIB dann ihre Dateien da gespeichert haben.
    Warum ist das so?? Ich dachte die .exe legt ein Verzeichniss mit dem Namen AsuroLib an und kopiert alles darein.

    Auf der dritten Seite wendest du dich dem GCC-Home Verzeichniss zu. Wofuer brauche ich das ueberhaupt?? Wenn mein ProgrammersNotepad das makefilein in meinem Prog-Home Verzeichniss startet, dann wird doch mein Programm kompiliert. Wenn ich die Lib im LIB-HOME Verzeichniss vorher schon kompiliert habe, bin ich doch fertig. Oder???

    Ebenfalls auf der dritten Seite sagst du das die Datei Makefile nicht vorhnaden ist:

    LIB-HOME\lib\Makefile
    Oh Mist aber auch. Die Datei ist nicht vorhanden! Keine Panik.
    Mit der Setup-Version von m.a.r.v.i.n es gibt nur die Datei Makefile.orig.
    KOPIERE diese Datei einfach nach Makefile, und schon ist sie vorhanden.
    Aber bei mir ist die Datei Makefile im LIB-HOME\lib Ordner bereits vorhanden.
    Desweiteren:
    Wohin soll ich die Makefile.orig ueberhaupt kopieren?? Es gibt keinen Ordner Makefile im Verzeichniss LIB-HOME\lib. Oder soll ich den Inhalt der makefile.orig in den Inhalt der, bei mir vorhandenen, Datei Makefile kopieren???

    Auf der vierten Seite oben hast du geschrieben:

    Bei einer einzelnen Datei (asuro.h) ging der alte Befehl noch.
    Bei mehreren Dateien (*.h) dürfen wir nur das Zielverzeichnis angeben.
    Welchen alten Befehl meinst du???

    Jetzt bin ich fast fertig,

    Auf Seite 4/5 erklaerst du wie man ein makefile aufruft.

    Geht dass nciht auch mit dem Programmers Notepad ???
    Wofuer sind dann ueberhaupt die Stapelverarbeitungsdatein da???

    Ich hoffe die Fragen sind nicht alzu daemlich.

    Danke fuer deine Hilfe
    NATHAN

    Uebrigens: ich verwende die Win-AVR Version 20060421

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo NATHAN,
    tut mir leid, dass ich erst jetzt zu einer Antwort komme.
    Es ist tatsächlich nicht so einfach alles 'supertruper' zu beschreiben, wenn man schon so lange mit so einem Zeug arbeitet, dass man sich nur noch wenige Gedanken dazu macht. Deshalb hier ein ernst gemeintes: Danke für die guten Fragen.

    Zitat Zitat von NATHAN
    Du hast auf der ersten Seite unten geschrieben:
    HOFFENTLICH hast du NICHT das Verzeichnis GCC-HOME zur Installation angegeben.
    Dann wäre nun das Verzeichnis GCC-HOME\lib eine 'Müllkippe', da sowohl das WinAVR und auch die Asuro-LIB dann ihre Dateien da gespeichert haben.
    Warum ist das so?? Ich dachte die .exe legt ein Verzeichniss mit dem Namen AsuroLib an und kopiert alles darein.
    Mit dem "HOFFENTLICH ..." meine ich vor allem die ZIP-Version. Hier kannst du ja auf deine Platte entpacken wo du möchtest. ABER du kannst ja auch bei der Setup-Version das Ziel-Verzeichniss angeben.
    Die "Müllkippe" ist somit nur dann vorhanden, das GCC-HOME als Ziel benutzt wurde.


    Zitat Zitat von NATHAN
    Auf der dritten Seite wendest du dich dem GCC-Home Verzeichniss zu. Wofuer brauche ich das ueberhaupt?? Wenn mein ProgrammersNotepad das makefilein in meinem Prog-Home Verzeichniss startet, dann wird doch mein Programm kompiliert. Wenn ich die Lib im LIB-HOME Verzeichniss vorher schon kompiliert habe, bin ich doch fertig. Oder???
    Hier ist der Unterschied zwischen GCC-Home und LIB-Home beim kompilieren deines Programms wichtig. In deinem Makefile (in PROG-HOME) zu deinem Programm muss hinterlegt sein, wo die Asuro-LIB zu finden ist, da sie beim kompilieren dazugelinkt wird. (Die Asuro-LIB wird nicht neu übersetzt, es wird nur die datei libasuro.a dazugenommen, halt gelinkt)
    Ich habe in der Beschreibung für dein Programm-Makefile (PROG-HOME) keine Angabe gemacht, dass Librarys auch noch an anderen Stellen als im GCC-HOME gesucht werden. Aus diesem Grund sollte die Asuro-LIB eben dahin kopiert werden.
    Warum das so ist?
    --> Wenn die Asuro-LIB (und die *.h-Dateien) nach GCC-HOME kopiert werden, muss eben keine Anpassung in den PROG-HOME/Makefiles gemacht werden, um dem Compiler zu sagen wo die libasuro.a auf deiner Platte liegt.
    Woher dein Makefile, das du über "Programmes-Notepad" erzeugt hast, weiss, dass es im LIB-HOME suchen muss, kann ich leider nicht sagen.


    Zitat Zitat von NATHAN
    Ebenfalls auf der dritten Seite sagst du das die Datei Makefile nicht vorhnaden ist:
    Ich habe gerade nochmal die Setup-Version neu installiert. Ich finde da kein Makefile. Nur das von mir angesprochene Makefile.orig. Bitte prüf nochmal, ob du die Makefiles im Verzeichniss examples meintest. Da sind nämlich welche.

    Zitat Zitat von NATHAN
    Desweiteren:
    Wohin soll ich die Makefile.orig ueberhaupt kopieren?? Es gibt keinen Ordner Makefile im Verzeichniss LIB-HOME\lib. Oder soll ich den Inhalt der makefile.orig in den Inhalt der, bei mir vorhandenen, Datei Makefile kopieren???
    Ja genau. Die Datei Makefile.orig soll als Datei Makefile im LIB-HOME\lib-Verzeichniss kopiert werden. Ist schon richtig, dass es kein "Verzeichniss" gibt.


    Zitat Zitat von NATHAN
    Auf der vierten Seite oben hast du geschrieben:
    Bei einer einzelnen Datei (asuro.h) ging der alte Befehl noch.
    Bei mehreren Dateien (*.h) dürfen wir nur das Zielverzeichnis angeben.
    Welchen alten Befehl meinst du???
    Du sollst nach der Beschreibung etwas suchen, und dann an der Stelle etwas ersetzen. Die gesuchte Stelle ist der "alte Befehl".


    Zitat Zitat von NATHAN
    Geht dass nciht auch mit dem Programmers Notepad ???
    Ja, aber da kenne ich mich nicht mit aus.

    Zitat Zitat von NATHAN
    Wofuer sind dann ueberhaupt die Stapelverarbeitungsdatein da???
    Wenn du mit Stapelverarbeitungsdatein die vorhandenen *.bat-Dateien meinst, dann sind dass 'nur' kleine Helferlein im Windows-Umfeld um einige Befehle zusammenzufassen. (Stapelverarbeitungsdatein sind nicht die Makefiles)

    Zitat Zitat von NATHAN
    Ich hoffe die Fragen sind nicht alzu daemlich.
    Nein, natürlich nicht, schliesslich fängt jeder erst einmal klein an.

    Viel Glück und Spaß mit dem Asuro
    Lieber Asuro programieren als arbeiten gehen.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2007
    Ort
    Iffeldorf
    Beiträge
    14
    Danke fuer die Antworten

    Ich hab mir die ganze Sache nochmal durch den Kopf gehen lassen und hab noch ein paar Fragen, bzw. Wuensche.

    Wie funktioniert das mit den Stapelverarbeitungsdatein genau? Greift Windows auf diese zu, wenn ich das makefile aufrufe? Was wird in denen den so besonderes gemacht?

    Ich habe jetzt auch die Lib noch mal neu installiert und finde allerdings trotzdem neben der Datei makefile.orig im Verzeichniss LIB-Home/lib noch die Datei Makefile. Allerdings hat sie keine Datei-Endung, was ich schon komisch finde. Oder ist bei Makefiles gar keine noetig (Warum nich?)

    Ausserdem habe ich die beiden Makefiles verglichen, in ihnen steht bei beiden dasselbe drin.... Komisch.

    Sind die auf Seite 4 beschriebenen Verfahren zum erstellen eines eigenen Verzeichnisses mit zugehoerigem Makefile denn notwendig, wenn man den Ordner LIB-Home/examples/FirstTry verwendet?

    Nun von den Fragen zu den Bitten:

    Es waere super, wenn du in deiner Docu noch die Vorteile der neuen Lib erwaehnen koenntest. Wenn ich das von den anderen Threads richtig verstanden habe, werden ja nur noch die Bibiotheks-Funktionen eingebunden, die auch wirklich im Programm verwendet werden, oder?? Koenntest du erklaeren, wie dieser Prozess funktioniert (Wenn es ihn denn gibt )?

    Auch waere es toll, wenn du vielleicht die Modularitaet, des WinAVR Paketes am Anfang kurz beschreiben koenntest. Ich vermute jetzt naemlich aufgrund deiner Antworten, dass der Kompiler eine voellig vom Programmers Notepad eigenstaendige Einheit ist. Man kann einen beliebigen C-Editor nehmen, welcher dann den WinAVR Kompiler benutzt, oder?? Ich glaube das ist einigen Anfaengern (wie mir) am Anfang nicht klar. (Da gibt es halt das Programmers Notepad und fertig )Wenn das stimmt: Welchen Editor verwendest du?

    Koenntest du vielleicht noch einen Quellcode ergaenzen, bei dessen Ausfuehrung man fesstellen kann, dass alles in Ordnung ist? (Uebrpruefung der Anzahl der geflashten Pages, der neuen Funktionen etc.)

    Das muss um Himmelswillen nicht alles sofort sein und ich weiss ja noch nicht mal ob die ganzen Vorschlaege ueberhaupt sinnvoll sind.

    Brauchst dir wegen mir keinen Stress machen

    Schon mal danke im Vorraus
    NATHAN

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    beispiel linux: dateiendungen sind ohnehin nicht nötig. das ist bloss eine unterscheidungsmöglichkeit für windoof =)

    nicht das makefile wird aufgerufen, sondern die anwendung MAKE. im makefile steht eine beschreibung, wie das programm zu kompilieren ist.
    kleinschreibung ist cool!

Seite 1 von 7 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •