Ich habe mir vorgenommen etwas in die Entwicklung von SDCC reinzuschauen. Als Werkzeug dazu möchte ich C++Builder verwenden. Ich hoffe das auch das Debugen von C-Programmen auch dabei möglich wird. Mein erster Schritt in diese Richtung ist der Versuch dir snapshots/sdd-src zu kompilieren. Später werde ich mich nur auf zwei für mich interessanten Prozessoren AVR und PIC konzentrieren. Meine erste Schritte: 1. http://totato.com/ : EOL Konverter ermöglicht Wandlung von Textdateien Linux <-> Windows 2. http://particle.teco.edu/software/sdcc/sdcc-archiv.html : SDCC_MinGW laden und installieren (Z.B. auf dem Laufwerk C:) . Vom Verzeichnis C:\SDCC_MinGW\msys\1.0\bin gawk.exe in das Verzeichnis C:\SDCC_MinGW\MinGW\bin kopieren. PATH ändern: Start -> Systemsteuerung -> Sytem -> Erweitert -> Umgebungsvariablen -> Path -> Bearbeiten. Am Ende einfügen: ;C:\SDCC_MinGW\MinGW\bin 3. http://www.koders.com/c/fid4E21E60DED227318812EA3BE4582C011C303524B.aspx Files: aslex.c und asm.h laden. C++Builder öffnen und dann: Neue->Anwendung->Weitere->C-Datei. Weiter dem Projekt beide Dateien aspex.c und asm.h hinzufügen. Menue Sart->Start (oder F9) wählen. So wurde aslex.obj erstellt. 4. http://sdcc.sourceforge.net/snap.php Aktuelle SDCC Source Code (sdcc-src) (Z.B. http://sdcc.sourceforge.net/snapshots/sdcc-src/sdcc-src-20090101-5312.tar.bz2) laden. Das gepackte File entpacken in C:\. Dann entsteht Verzeichnis C:\sdcc\... 5. Jetzt habe ich das aslex.obj in alle Unterverzeichnisse kopiert: C:\sdcc\as\asxxsrc C:\sdcc\as\hc08 C:\sdcc\as\mcs51 C:\sdcc\as\xa51 C:\sdcc\as\z80 6. Jetzt: Start->Alle Programme_>Zubehör->Eingabeanforderung. Dann über bekannte Dos-Befehle (cd \, cd sdcc) in das Verzeichnis c:\sdcc. Jetzt in der Kommandozeile tippen: make –fMakefile.bcc >meldungen.txt 7. Alle Meldungen wurden in das File meldungen.txt geschrieben. Es sind 4 Fehler aufgetreten: Fehler E2468 ralloc.c 1399: Ein Wert vom Typ void ist nicht zulässig in Funktion createStackSpil Fehler E2468 ralloc.c 1483: Ein Wert vom Typ void ist nicht zulässig in Funktion isSpiltOnStack Fehler E2468 ralloc.c 1512: Ein Wert vom Typ void ist nicht zulässig in Funktion spillThis Fehler E2468 ralloc.c 1562: Ein Wert vom Typ void ist nicht zulässig in Funktion selectSpil Alle Fehler (in C:\sdcc\src\pic\ ralloc.c) haben Verbindung zum Makro: #define FENTRY2 1 ? (void)0 : printf Ein Anruf: FENTRY2("called."); führt zum Fehler; “C” gibt es grenzlose Möglichkeiten. Manche führen jedoch zum „Absurdum“ Was bezweckte der Entwickler bei dem Makro? Vorläufig habe ich das Makro geändert: #define FENTRY2 printf In der Kommandozeile getippt: make –fMakefile.bcc >meldungen.txt Jetzt wird einen Fehler gemeldet: Fehler E2063 glue.c 142: Unzulässige Initialisierung in Funktion pic14_constructAbsMap. Die Zeile 142 im File c:\sdcc\src\pic\glue.c: memmap *maps[] = { data, sfr, NULL }; Vielleicht weiß schon jemand etwas dazu…
Hi, ich würde dir raten, erstmal den Compiler zu benutzen, den das Projekt nutzt. Von der Webseite: ---snip--- What Platforms are Supported? Linux - x86, Microsoft Windows - x86 and Mac OS X are the primary, so called "officially supported" platforms. SDCC compiles natively on Linux and Mac OS X using using gcc. Windows release and snapshot builds are made by cross compiling to mingw32 on a Linux host. Windows 9x/NT/2000/XP users are recommended to use Cygwin (http://sources.redhat.com/cygwin/) or may try the unsupported Borland C compiler or Microsoft Visual C++ build scripts. ---snip--- Wenn das läuft, kannst du immer noch versuchen, das ganze auf andere Compiler zu portieren. Boris
Kannst du mir einen guten Compiler für Cygwin oder MingW empfählen? Mit Src-Debugen und vernünftiger Entwicklungsumgebung..
Stell Borland mal auf C99 um, das sollte das Problem mit der Initialisierung lösen. Ansonsten gcc + beliebiger Editor/IDE (z.B. Eclipse). Debugger sollte bei der Compilerentwicklung nicht unbedingt notwendig sein, wenn doch kannst du gdb verwenden.
>> 1 ? (void)0 : printf
...das kann doch nur ein böser Hack von eime Programmierer sein, etwas
zu realisieren was der Compiler anders anmäkeln würde...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.