www.mikrocontroller.net

Forum: Compiler & IDEs MSPGCC mag nicht


Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich habe mir das MSPGCC-Packet auf mein Win2k System installiert und
wollte jetzt endlich meine Projekte darauf umstellen, aber leider mag
der Compiler nicht :(
Ich habe in den default-ordner installiert und vorher noch MinGW
updated. Wenn ich den Compiler aus dem /bin Verzeichnis starte, dann
läuft er, wenn ich ihn aber aus irgend einem anderen Verzeichnis
starte, kommt die Fehlermeldung, daß "asprintf" nicht in der
cygwin1.dll gefunden werden konnte... Ich vermute, daß er die
cygwin1.dll gar nicht siht... was jetzt?

Gruß,
Patrick...

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi nochmal!

Der compiler läuft jetzt!
Allerdings gibts da mittlerweile ein anderes Problem:
test.o: In function `main':
test.o(.text+0x8e6): undefined reference to `puts'
test.o(.text+0x8fa): undefined reference to `puts'
test.o(.text+0x910): undefined reference to `puts'
test.o(.text+0x918): undefined reference to `puts'
test.o(.text+0x97c): undefined reference to `puts'
test.o(.text+0xa8e): more undefined references to `puts' follow

Ich habe eine eigene (mit IAR funktionierende) printf-implementation
und es sieht so aus, als ob dieses 'puts' das symbol für mein printf
ist...
Beim Kompilieren kommt kein fehler, erst beim linken...

Gruß,
Patrick...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu deinem ersten Problem:
Ich vermute dass sich noch eine alte Cygwin-DLL irgendwo in deinem
Windows-Verzeichnis befindet. Ersetze sie durch die beim Compiler
mitgelieferte, dann sollte es klappen.

MSPGCC kennt keine Funktion puts, die musst du für das gewünschte
Ausgabegerät selber schreiben. Aber wahrscheinlich musst du deine
printf-Funktion überhaupt nicht portieren, es gibt bereits uprintf() in
der MSPGCC-Standard-Library:

http://mspgcc.sourceforge.net/manual/x1108.html

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas!

Also: Die printf-routine wird nicht auf puts zurückgeführt! Der Pfad
müsste ungefähr so aussehen:
printf -> print -> print[s|i|l] -> printchar -> putchar

putchar ist ein PP-Makro und ist so definiert:
#define putchar(c)    TXBUF0 = c; \
        while ((IFG1 & UTXIFG0) == 0)

Ich weis nicht mal, wo der compiler das puts her nimmt...

Gruß,
Patrick...

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi nochmal!

Ich habe so die vermutung, daß der Compiler sich irgendwo her ein
anderes printf holt! Wenn ich mein printf umbenenne, dann kommt dieser
Fehler nicht!

Aber wo her?

Gruß,
Patrick...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Compiler darf alle Standardfunktionen intern ersetzen, deshalb muss
man für selbstgeschriebene Funktionen andere Namen wählen.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heisst: Ich kann keine Standardfunktion überlagern?

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.