OpenSuse: Probleme mit "Make all" "Unbekannte Option -mmcu=avr5"

#3414037
Lesenswert?

Hallo Leute,

ich hab seit kurzem OpenSuse auf meinem Laptop und kenne mich dem 
entsprechend auch aus... :(

Ich hab avrdude, avrlibc und avrutils installiert und die Libraries 
sowie die Inclue-Path in .profile eingetragen.
1
C_INCLUDE_PATH=/opt/cross/avr/avr/include:/opt/cross/avr/include
2
export C_INCLUDE_PATH
3

4
###
5
LIBRARY_PATH=/opt/cross/avr/lib:/opt/cross/avr/avr/lib:/opt/cross/avr/avr/lib/avr5
6
export LIBRARY_PATH

wenn ich jetzt über die Konsole mit "Make all" versuche das Programm zu 
erstellen, kommt die Folgende Fehlermeldung.
1
mmr70v0.06 # make all
2
  CC main.c
3
as: Unbekannte Option »-mmcu=avr5«
4
make: *** [main.o] Fehler 1

Ich bin auch als "su" angemeldet...

Was hab ich vergessen?? Danke schon mal für eure hilfe ;)

MFG

Sebastian
Gast #3414973
Lesenswert?

Sebastian S. schrieb:
> Ich bin auch als "su" angemeldet...

Dazu gibt es keinerlei Grund.

Sebastian S. schrieb:
> könntest du mir auch sagen wie ich das alles machen kann?

Irgendwo muß doch dein Makefile herkommen. Dort ist der falsche Compiler 
eingetragen. Das mußt du halt ändern. Da aber keiner dein Makefile 
kennt, wird es schwierig zu sagen, wie du es genau ändern mußt.
Gast #3414994
Lesenswert?

Sebastian S. schrieb:
> Hallo Leute,
>
> ich hab seit kurzem OpenSuse auf meinem Laptop und kenne mich dem
> entsprechend auch aus... :(
>
> Ich hab avrdude, avrlibc und avrutils installiert und die Libraries
> sowie die Inclue-Path in .profile eingetragen.

Wenn das aus den OpenSuse Repo ist dann gut ...

>
>
1
> C_INCLUDE_PATH=/opt/cross/avr/avr/include:/opt/cross/avr/include
2
> export C_INCLUDE_PATH
3
> 
4
> ###
5
> LIBRARY_PATH=/opt/cross/avr/lib:/opt/cross/avr/avr/lib:/opt/cross/avr/avr/lib/avr5
6
> export LIBRARY_PATH
7
>
>
> wenn ich jetzt über die Konsole mit "Make all" versuche das Programm zu
> erstellen, kommt die Folgende Fehlermeldung.
>
>
1
> mmr70v0.06 # make all
2
>   CC main.c
3
> as: Unbekannte Option »-mmcu=avr5«
4
> make: *** [main.o] Fehler 1
5
>
>

Hier wird der Host CC (C-Compiler) aufgerufen, was ja nicht der Compiler 
für dein Zielsystem ist.

> Ich bin auch als "su" angemeldet...
>

Bitte nicht als root arbeiten. Pakete installieren kannst du damit ja, 
aber nicht arbeiten.
Du könntest im schlechtesten Fall dein System beschädigen.

> Was hab ich vergessen?? Danke schon mal für eure hilfe ;)
>

Ja.
suche im Makefile die Zeile
1
CC=gcc
und ändere diese in
1
CC=cross-avr-gcc
> MFG
>
> Sebastian
#3415495
Lesenswert?

Hi Leute,

danke schonmal für die Hilfe...

Leider bekomm ich jetzt diesen Fehler :(

1
mmr70v0.06> make all
2
  CC main.c
3
sh: cross-avr-gcc: Kommando nicht gefunden.
4
make: *** [main.o] Fehler 127


Ich hab jetzt auch cross-avr, cross-gcc-avr, gcc-avr usw. ausprobiert, 
aber immer der selbe Fehler..

Ich hab auch nochmal kontrolliert ob das Repository eingebunden ist. Und 
es ist so...

Im Anhang könnt ihr das Makefile finden. Das habe ich nicht selbst 
erstellt, sondern von diesem Beitrag genommen. 
(Beitrag "[AVR] FM-Transmitter für 1,50EUR --> Ansteuerung?" ; mmr70v0.06.zip)

Ich will das einfach nur kompilieren und drauf laden!!
Gast #3415533
Lesenswert?

Hmmm wenn ich die Liste am Anfang sehe fehlen da die binutils und gcc.

In OpenSuse sind diese im Repo drin
cross-avr-binutils
cross-avr-libc
cross-avr-gcc

für die komplette Toolchain
auch avrdude ist drin.

Damit dürfte sich der "Umweg" über /opt in .profile erübrigen

Dem Compiler kannst du über die Shell-Completion finden
Die <TAB> Taste ist dein Freund
#3415879
Lesenswert?

Hmm...

kann ich da irgendwie was falsch installiert haben??
1
   CrossToolchain:avr
2
URL: http://download.opensuse.org/repositories/CrossToolchain:/avr/openSUSE_12.3/
3
Kategorie: YUM

Des steht in den Repositories drin...

Und das geb ich ein...
1
Sebastian@linux-xo4a:~> cd /home/Sebastian/Dokumente/Sony\ Ericcson\ FM-Transmitter/Code/mmr70v0.06
2
Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson FM-Transmitter/Code/mmr70v0.06> make all  CC main.c
3
as: Unbekannte Option »-mmcu=avr5«
4
make: *** [main.o] Fehler 1
5
Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson FM-Transmitter/Code/mmr70v0.06>

Die Fehlermeldung kommt wenn ich avr-gcc drin hab...

Mit Tab kommt das...
1
Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson FM-Transmitter/Code/mmr70v0.06> avr
2
avr-addr2line   avr-elfedit     avr-gcc-nm      avr-insight     avr-objdump
3
avr-ar          avr-example     avr-gcc-ranlib  avr-ld          avr-ranlib
4
avr-as          avr-g++         avr-gcov        avr-ld.bfd      avr-readelf
5
avr-c++         avr-gcc         avr-gdb         avr-nesc-as     avr-size
6
avr-cpp         avr-gcc-4.8.2   avr-gdbtui      avr-nm          avr-strings
7
avrdude         avr-gcc-ar      avr-gprof       avr-objcopy     avr-strip
8
Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson FM-Transmitter/Code/mmr70v0.06> avr
Gast #3416130
Lesenswert?

Du hast eine komplette Toolchain mit gcc und den binutils an Board.
Deine AVR Libs dürften unter /usr/avr liegen

Kommentiere erstmal die Änderungen in deinem .profile aus

Die bei den Libs holt sich gcc (bzw. avr-gcc) schon die richtigen ...
Bei den include's mußt du ggf. die Pfade im Makefile angeben und nur 
dort.

Das mit .profile ist hier nur Mist.

Mach mal einen Test ohne Makefile
1
echo "main () {}" > test.c
2
avr-gcc test.c -o test -static
sollte ohne Probleme durchlaufen
#3416494
Lesenswert?

Hallo Hans Ulli Kroll,

jetzt hab ich mal den Test gemacht und es kommt folgender Fehler
1
/mmr70v0.06
2
Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson FM-Transmitter/Code/mmr70v0.06> echo "main () {}" > test.c
3
Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson FM-Transmitter/Code/mmr70v0.06> avr-gcc test.c -o test -static
4
/tmp/cc6UWjng.s: Assembler messages:
5
/tmp/cc6UWjng.s:13: Error: too many memory references for `in'
6
/tmp/cc6UWjng.s:14: Error: too many memory references for `in'

wenn ich es ohne "-static" mache, kommt das gleiche....

Noch was. Wie kann ich die Pfade für die Includes angeben? Genau so wie 
im .profile und an welcher stelle wäre es da am besten?
Gast #3416995
Lesenswert?

Johann L. schrieb:
> Wobei das -static überflüssig und daher verwirrend ist.  Dynamisches
> Linken und -fpic etc. wird von avr-gcc nicht unterstützt.

danke.
Ich kenne mich nur auf mips, arm und x86 aus.

Sebastian S. schrieb:
> Hallo Hans Ulli Kroll,
>
> jetzt hab ich mal den Test gemacht und es kommt folgender Fehler
>
>
1
> /mmr70v0.06
2
> Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson 
3
> FM-Transmitter/Code/mmr70v0.06> echo "main () {}" > test.c
4
> Sebastian@linux-xo4a:~/Dokumente/Sony Ericcson 
5
> FM-Transmitter/Code/mmr70v0.06> avr-gcc test.c -o test -static
6
> /tmp/cc6UWjng.s: Assembler messages:
7
> /tmp/cc6UWjng.s:13: Error: too many memory references for `in'
8
> /tmp/cc6UWjng.s:14: Error: too many memory references for `in'
9
>
>
> wenn ich es ohne "-static" mache, kommt das gleiche....
>

Seltsam.
Hast du alle Änderungen die du im ersten Post gemacht hast 
auskommentiert ??
Wie gesagt, das mit dem /opt Verzeichnis ist seltsam.
Normalerweise sollte das unter /usr/avr/ stehen.

> Noch was. Wie kann ich die Pfade für die Includes angeben? Genau so wie
> im .profile und an welcher stelle wäre es da am besten?

Wie gesagt ich mag solche Hacks nicht.
Dann komme ich zum Teil mit dem Cross-Compilieren vom Linux-Kernel und 
anderen Tools durcheinander.
Nach meiner Meinung ist sowas am besten im Makefile aufgehoben.

Nach diesem Schema
1
INCLUDE = /opt/cross/avr/avr/include:/opt/cross/avr/in clude
2
CFLAGS=+= -Wall -Os -I${INCLUDE}
andere Zeilen entsprechen anpassen.
Gast #3417069
Lesenswert?

Also unter openSUSE werden die binaries nach /opt/cross installiert, und 
unter /usr/bin werden wrapper scripte installiert, die $PATH 
entsprechend anpassen, damit die executables gefunden werden.

Ich vermute mal, dass du in deinem Makefile einfach nur die CC variable 
anpassen musst.

von CC = gcc
nach CC = avr-gcc

Und ansonsten keine variablen in .profile setzen, die Toolchain 
funktioniert nach dem Installieren sofort ohne anpassung.

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