-c ../../../../libgcc/../gcc/config/avr/libgcc.S ../../../../libgcc/../gcc/config/avr/libgcc.S: Assembler messages: ../../../../libgcc/../gcc/config/avr/libgcc.S:876: Error: illegal opcode elpm for mcu avr5 ../../../../libgcc/../gcc/config/avr/libgcc.S:877: Error: illegal opcode elpm for mcu avr5 make[4]: *** [_tablejump_elpm.o] Error 1 Meine Compiler: source von gcc-core 4.4.1 gcc (GCC) 4.1.3 20080704 (prerelease) (Debian 4.1.2-25) Hat jemand eine Ahnung wie man das Problem beseitigen kann? Grüsse
Ist elpm for core avr5 erlaubt? Falls ja, ist es ein Fehler in den avr-binutils. Falls nein, ist es ein Fehler in avr-gcc (resp. libgcc). Ergo: Andere Version(en) verwenden oder Quelle patchen ;-) Johann
Danke Johann. Ich bin jetzt auf gcc-4.3.3 umgestiegen und es klappt. Ich hab den Compiler und die binutils intstalliert. Mir bleibt nur noch die libc zu kompilieren. Ich nehme an, dass dieser Schritt sowohl den neuen Compiler sowie die binutils benötigt. (da ja die lib mit dem avr compiler bearbeitet wird und nicht mit dem für x86-64) Ich habe aber auf dem System noch einen avr-gcc sowie die entsprechende binutils (avr-nm, avr-objcopy, etc). Wenn ich configure --help anschaue, werde ich nicht schlau, wie ich den Skript auf den neuen Compiler/binutils ansetzen kann. Von der Regel Gebrauch machen, dass in PATH zuerst vorkommende Programme zuerst benutzt werden? Scheint mir irgendwie unsauber. Den Compilerpfad kann ich wahrscheinlich mit ./configure CC=/neuerpfad/gcc festlegen. Grüsse, Daniel
1 | Configured with: ../configure --prefix=/opt/avr/gcc --target=avr --enable-languages=c --disable-nls --disable-libssp |
2 | Thread model: single |
3 | gcc version 4.3.3 (GCC) |
4 | configure:3124: $? = 0 |
5 | configure:3131: avr-gcc -V >&5 |
6 | avr-gcc: '-V' option must have argument |
7 | configure:3135: $? = 1 |
8 | configure:3158: avr-gcc -o conftest /opt/avr/gcc/lib conftest.c >&5 |
9 | /tmp/ccEXN5ec.s: Assembler messages: |
10 | /tmp/ccEXN5ec.s:15: Error: too many memory references for `in' |
11 | /tmp/ccEXN5ec.s:16: Error: too many memory references for `in' |
12 | /tmp/ccEXN5ec.s:19: Error: no such instruction: `ldi r24,lo8(0)' |
13 | /tmp/ccEXN5ec.s:20: Error: no such instruction: `ldi r25,hi8(0)' |
14 | configure:3162: $? = 1 |
15 | configure:3361: checking whether we are cross compiling |
16 | configure:3363: result: yes |
17 | configure:3367: checking for suffix of object files |
18 | configure:3393: avr-gcc -c conftest.c >&5 |
19 | /tmp/cczPenSg.s: Assembler messages: |
20 | /tmp/cczPenSg.s:15: Error: too many memory references for `in' |
21 | /tmp/cczPenSg.s:16: Error: too many memory references for `in' |
22 | /tmp/cczPenSg.s:19: Error: no such instruction: `ldi r24,lo8(0)' |
23 | /tmp/cczPenSg.s:20: Error: no such instruction: `ldi r25,hi8(0)' |
24 | configure:3397: $? = 1 |
25 | configure: failed program was: |
26 | | /* confdefs.h. */ |
27 | | #define PACKAGE_NAME "avr-libc" |
28 | | #define PACKAGE_TARNAME "avr-libc" |
29 | | #define PACKAGE_VERSION "1.6.7" |
30 | | #define PACKAGE_STRING "avr-libc 1.6.7" |
31 | | #define PACKAGE_BUGREPORT "avr-libc-dev@nongnu.org" |
32 | | #define PACKAGE "avr-libc" |
33 | | #define VERSION "1.6.7" |
34 | | /* end confdefs.h. */ |
35 | | |
36 | | int |
37 | | main () |
38 | | { |
39 | | |
40 | | ; |
41 | | return 0; |
42 | | } |
43 | configure:3412: error: cannot compute suffix of object files: cannot compile |
44 | See `config.log' for more details. |
Was kann das Problem sein? Probiert man ein minimales Program zu kompilieren, kommt auch ... Error: too many memory references for `in' Error: too many memory references for `in' Error: no such instruction: `ldi r24,lo8(0)' Error: no such instruction: `ldi r25,hi8(0)' scheint als wäre der Compiler nicht in der Lage object Datei zu erzeugen. Natürlich klappt es nicht mit libc :-/
Sieht aus als würde der falsche Assembler genommen (as?). Hast du avr-gcc und binutils im gleichen Pfad installiert? gcc geht teilweise von dem Standard-Layout aus und wenn er nix findet wird eben der normale as genommen. as gibts ja auch in $INSTALL/avr/bin, und wenn der net gefunden wird, wird's nen anderer as. Bei meinem 'privaten' gcc (nicht für AVR) mache ich den build für die newlib genauso wie gmp und mpfr auch: Einfach nen Softlink in die Toplevel GCC-Quelle als "newlib". Das GCC-configure erkennt das und baut ne korrekte Target-Newlib. Ich weiß net wie Jörg die avr-libc aufgezogen hat und ob ein In-Tree-Build funktioniert. Wär jedenfalls ein Versuch wert und ist deutlich einfacher wenn's geht, vor allem wenn du ein Cross-Build machen willst (zB unter Linux einen avr-gcc für MinGW bauen willst). Johann
>Ich weiß net wie Jörg die avr-libc aufgezogen hat und ob ein >In-Tree-Build funktioniert. Wär jedenfalls ein Versuch wert und ist >deutlich einfacher wenn's geht, vor allem wenn du ein Cross-Build machen >willst (zB unter Linux einen avr-gcc für MinGW bauen willst). ich hab mich doof angestellt ;) in-tree-build hat funktioniert. Als --prefix= habe ich denselben Ordner angebenen, in dem schon binutils und gcc drin sind.
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.