www.mikrocontroller.net

Forum: Compiler & IDEs Ein Projekt aus mehreren Datein mit MSPGCC kompilieren.


Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Der MSPGCC läuft jetzt. Nur hab ich es nochnicht hinbekommen das 
folgende Beispielprogramm zu kompilieren:
BSPPROJEKT:
====================
MAIN.C
ZEITSCHLEIFEN.C
ZEITSCHLEIFEN.H

Wie sieht hierfür nun die BAT aus (keine MAKE oder irgendwas, ich will 
eine BAT haben), damit am Ende dann das BSPPROJEKT.HEX erzeugt wird.

Die Projektdateien liegen in einem Ordner, der in der PATH aufgelistet 
ist.

Warte gespannt auf eure Antwort.

mfg Weichinger Klaus

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstens solltest Du bitte alle Dateiendungen klein schreiben.
.C und .c sind zwei verschiedene Dinge (das erste ist eine C++
Quelle, das zweite eine C Quelle).

Zweitens kannst Du einfach mehrere Dateinamen auf der
Kommandozeile des gcc angeben.  Wenn Du make benutzen wuerdest,
so wuerde dieses (halb-)automatisch mehrere Compilerlaeufe
starten, um aus jeder .c Datei eine .o zu bauen und diese am
Ende zu linken.  Beides funktioniert.

Wie Du daraus ein Ihex-File baust, musst Du in der MSP-GCC Doku
sehen, ich kenne den MSP-GCC selbst nicht.  Vermutlich musst Du
irgendwie ein objcopy anwerfen (kann auch msp430-objcopy oder
so heissen).

In %PATH% werden ausfuehrbare Dateien gesucht, normale Daten
(und C-Quellen) haben dort nichts verloren und werden dort
nicht gesucht.  Der Compiler nimmt die Dateien, die Du ihm
auf der Kommandozeile angibst, wenn kein Verzeichnis davorsteht,
dann sucht er sie im aktuellen.

Autor: Weinga-Unity (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bin immer noch dran, das oben genannte Projekt zu kompilieren (hab das 
ganze auch als ZIP im Anhang).

BAT-Datei:
================================================
msp430-gcc main.c zeitschleifen.c -B C:\Compiler\Temp -mmcu=msp430x1232 
-o MAIN.ELF
msp430-objcopy -O ihex MAIN.elf MAIN.hex


MS-DOS-Output:
================================================
C:\Compiler\TEMP>msp430-gcc main.c zeitschleifen.c -B C:\Compiler\Temp 
-mmcu=msp430x1232 -o MAIN.ELF
main.c:1:27: zeitschleifen.h: No such file or directory
zeitschleifen.c:1:27: zeitschleifen.h: No such file or directory

C:\Compiler\TEMP>msp430-objcopy -O ihex MAIN.elf MAIN.hex
C:\COMPILER\MSPGCC\BIN\MSP43~11.EXE: MAIN.elf: No such file or directory


Wie man sieht, funktioniert es nicht!

Könnte mir jemand einen TIPP geben,wies das funktioniert?

Hab WIN98. Also nicht die aktuelle GCC-Toolchain.

mfg Weichinger Klaus

Autor: Oryx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe Deinen Compilerparametern mal folgenden hinzugefügt:

-I D:\src\msptest

So weiß der Compiler, wo er Deine H-Dateien suchen soll. Du mußt 
natürlich Deinen Pfad eintragen.

Bei mir ließ sich alles compilieren.

Was soll eigentlich dein -B Parameter?
Kann man damit vielleicht die Pfadangaben in der autoexec.bat vermeiden?

Ich habe den -B bei mir weggelassen.

Oryx

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Danke, sieht jetzt ziemlich gut aus! Aber ist das so korrekt, dass ich 
alle .f Files in eine Zeile schreiben kann? Werden da dann alle C Files 
mit den dazugehörigen H-Files richtig zusammengeführt?

Habs jetzt so probiert. Kompiliert hat er, ob das Programm funktioniert 
weiß ich nicht. Sagt mir, obs so funktioniert oder ob es anders gehört.

msp430-gcc MAIN.c ZEITSCHLEIFEN.c -mmcu=msp430x1232 -o MAIN.ELF -I 
c:\compiler\mspgcc\msptemp
msp430-objcopy -O ihex MAIN.elf MAIN.hex


mfg Weichinger Klaus

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(-B beschreibt den Standort der internen gcc-Komponenten.  Muß
man nur angeben, wenn der gcc in andere Verzeichnisse installiert
wird als die, für die er mal konfiguriert worden ist.)

»alle .f Files«?  Du hast irgendwo FORTRAN-Dateien? ;-)

Ja, wie ich schon einleitend schrieb, darfst  Du all Deine
Quelldateien in einer Kommandozeile angeben, egal, ob es sich
dabei um .c oder .S oder was auch immer für Quellen handelt
(auch .o oder .i wären zulässig).

Schönheitsfehler: in einer Zeile behauptest Du MAIN.ELF, in
der anderen MAIN.elf.  Unter Unix wären das zwei verschiedene
Dateien.
Ich verstehe Deine Affinität zur CAPSLOCK-Taste aber ohnehin
nicht...

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, dann passts eh so.
.f war ein Tippfehler (c müsste es heißen) und .ELF war noch ein 
Überbleibsl von vorher (wo ich noch alles groß geschriebenhabe).

mfg Weichinger Klaus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.