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


von Weinga-Unity (Gast)


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

von Joerg Wunsch (Gast)


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.

von Weinga-Unity (Gast)


Angehängte Dateien:

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

von Oryx (Gast)


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

von Weinga-Unity (Gast)


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

von Joerg Wunsch (Gast)


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...

von Weinga-Unity (Gast)


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

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.