Kann mir vielleicht jemand erklären wie man mit Cygwin kompiliert? Mit WinAVR habe ich das immer so gemacht: make CONFIG=xxx Wie funktioniert das unter Cygwin? Mit gcc beginnts, aber wie gehts weiter?
??? Unter cygwin geht das genauso, wie unter Windows mit WinAVR. Wenn du ein passendes makefile hast, dann nimm das. Eventuell musst du da drin ein paar Pfade anpassen. Manfred W. schrieb: > Mit gcc beginnts, aber wie gehts weiter? Das beginnt nicht mit gcc, sondern mit avr-gcc. Oliver
Cycwin an sich ist kein Compiler, sondern eine Sammlung von Libraries und Tools. Hast du in Cygwin überhaupt einen passenden Compiler installiert?
Mich würde es interessieren, warum du cygwin verwenden willst. Welchen Zweck soll das erfüllen?
Grüß euch. Also der Zweck dabei ist, das mit WinAVR eine falsche Dateigröße kompiliert. Dadurch wird die Binary vom Bootloader nicht mehr geladen bzw. ist zu groß für den Flashspeicher. Der Code selbst ist nicht von mir. Ich möchte ihn nur kompilieren. Unter DEBIAN-Linux soll das angeblich korrekt funktionieren. Das zu installieren wollte ich mir jetzt allerdings ersparen. Das Kompilat muß exakt 61440 Bytes groß sein, damit der Bootloader es erkennt. Meines hat mit WinAVR-20100110 eine größe von 62694 Bytes. Anscheinend wird da noch irgendein Müll mitreingepackt. Nun dachte ich vielleicht gehts mit Cygwin.
Da denkst du falsch, ein avr-gcc erzeugt unter cygwin den selben Code wie unter Windows, wenn er die gleiche Versionsnummer hat, und auch die gleiche avrlibc-Version benutzt. Wenn das älterer Sourcecode ist, versuch es mal mit WinAVR-2007xxxx (der letzten 2007er). Der darin enthaltene avr-gcc 3.4 (?) erzeugt meistens kleineren Code als die neueren WinAVR-Varianten. Oliver
Ich habe jetzt die letzte 2007 Version versucht. Leider läuft der wiederum nicht durch:
1 | D:\Downloads\SD2IEC DTV64>make CONFIG=config-larsp |
2 | MKDIR obj-m644p-larsp |
3 | CONF2H config-larsp |
4 | AS fastloader-ll.S |
5 | CC buffers.c |
6 | CC d64ops.c |
7 | cc1.exe: warnings being treated as errors |
8 | d64ops.c: In function 'd64_open_write': |
9 | d64ops.c:1307: warning: 's' may be used uninitialized in this function |
10 | d64ops.c:1307: warning: 't' may be used uninitialized in this function |
11 | make: *** [obj-m644p-larsp/d64ops.o] Error 1 |
Was hingegen mit der WinAVR-20100110 problemlos funktioniert hat. So ein Mist aber auch. Muß ich mir jetzt extra DEBIAN antun?
1 | CFLAGS += -Wall -Wstrict-prototypes -Werror |
-Werror: Make all warnings into errors Bitteschön
Der Compiler soll laut dem -Werror Flag alle Warnungen als Fehler betrachten und das heißt, dass er bei Warnungen den Kompiliervorgang abbricht. Wenn also beim Kompilieren 2 Warnungen auftreten: > d64ops.c:1307: warning: 's' may be used uninitialized in this function > d64ops.c:1307: warning: 't' may be used uninitialized in this function bricht der den Kompiliervorgang mit einem Fehler ab. Was du tun musst: das -Werror Flag einfach aus dem Makefile entfernen. Gruß Oliver
Manfred W. schrieb: > Bitteschön... Ich wußte bisher nicht, daß man ganze Romane als Makefile schreiben muß. Wer soll denn sowas lesen. Beim WINAVR kann man einige Schalter ausprobieren, die noch viel zusammendampfen. Dazu steht auch was in der Artikelsammlung. Oder zippe alles zusammen und sende es als Dateianhang. Dann kann Dir das bestimmt jemand compilieren. Peter
Das kompilieren möchte ich ja gerne selbst übernehmen, da ich noch einige Änderungen am Code vornehmen möchte. Aber,.... jetzt hat es tatsächlich funktioniert und er hat auch die korrekte größe kompiliert. Einige Warnungen wurden ausgegeben aber die werden halt ignoriert. Hoffe das hat jetzt keine Auswirkung auf das Kompilat. Aber die neuere WinAVR Version zeigt diese ja nicht mal an, also sind die womöglich sowieso zu ignorieren.
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.