Crosscompiling avr-gcc

Gast #1345198
Lesenswert?

-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
Gast #1345449
Lesenswert?

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
Gast #1345521
Lesenswert?

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 :-/
Persönliche Seite #1345540
Lesenswert?

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
Gast #1345759
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren