AVR-GCC-Linux
Introduktion
Jag körde för länge sedan Windows, där var det lätt att få en fungerande avrkompliator installerat, bara att ladda hem WinAVR (uttalas Whenever) och installera det.
När jag bytte till Linux var det värre, försökte några gånger men fick det inte att fungera, före jag läste MaggoT's tråd och alla kloka svar där. Förhoppningsvis får någon nytta av denna guide så jag inte skriver i onödan.
Installation
Under installationen var jag inloggad med mitt vanliga konto, macce. Jag installerade allt under /home/macce/avr. Vill du ha installerad det på något annat ställe, ändra då sökvägen.
Vi behöver:
Binutils, Jag fick inte nyaste versionen att fungera, så jag körde med 2.14 som fungerade bra.
AVR-libc, Nyaste versionen (1.2.5 vid skrivande stund) fungerade bra.
gcc - Jag tog den nyaste versionen, dvs gcc-3.4.4/gcc-3.4.4.tar.bz2 i skrivande stund.
AVRDude, jag installerade det från portagen (via "emerge" i Gentoo Linux).
Binutils Packa upp paketet: tar jxfv binutils-*.tar.bz2 Gå till binutilsmappen: cd binutils* Konfigurera binutils: ./configure --prefix=/home/macce/avr --target=avr --enable-languages=c --host=avr --disable-nls Kompliera binutils: make Installera binutils: make install
gcc Nästa program blir gcc, vår C-kompliator: Packa upp: tar jzfv gcc*tar.bz2 Byt mapp: cd gcc* Konfigurera: ./configure --prefix=/home/macce/avr --target=avr --enable-languages=c --host=avr --disable-nls Kompliera: make Installera: make install
Gå nu in i mappen dit du installerade programmen, i mitt fall /home/macce/avr genom att skriva cd /home/macce/avr/bin Lista filerna i mappen: ls Du borde minst ha avr-gcc i mappen, har du inte men har gcc, kopiera gcc till avr-gcc genom att skriva cp gcc avr-gcc Saknar du följande filer, som jag gjorde: avr-ar, avr-as och avr-ranlib kan du fuska lite och kopiera dem från ditt system. Sök efter filerna med t.ex. whereis och kopiera dem till bin-mappen genom att skriva: whereis ar Har du whereis installerat skriver den ut var programmet finns, i mitt fall /usr/bin/ar. Du får det kopierat till din bin-mapp genom att skriva: cp /usr/bin/ar /home/macce/avr/bin/avr-ar Gör samma med de övriga filerna du saknar. Detta fungerade för mig, men är garanterat inte så man skall göra.
avr-libc Nu skall vi installera avr-libc, detta program kräver de programmen vi installerade tidigare + eventuellt fulkopierade. Dock vet inte avr-libc-installationen var programmen finns, så vi måste hjälpa det lite: export CC=/home/macce/avr/bin/avr-gcc export AR=/home/macce/avr/bin/avr-ar export AS=/home/macce/avr/bin/avr-as export RANLIB=/home/macce/avr/bin/avr-ranlib
Nu skall vi konfigurera avr-libc, men först måste vi gå packa upp programmet: cd /mapp/vart/du/laddade/hem/avr-libc Packa upp: tar jxfv avr-libc*tar.bz2 Gå in i mappen: cd avr-libc* Konfigurera: ./doconf --PREFIX=/home/macc/avr Kompliera: ./domake Installera: ./domake install
Slutskede
Grattis! Nu kan du skriva och kompliera dina egna program !
Men...för att kompliera behöver du en makefile, jag använder [denna]. Ladda hem den, modifiera vilken CPU etc. du använder. Jag behövde också ändra sökvägarna till avr-gcc, avr-ar etc. Sök efter dem i Makefilen, fyll i fullständig sökväg och byt namn på Makefile.tpl till Makefile. Vips är allt klart!
Vill du ha en .hex-fil från Makefilen kör du bara "make hex" i mappen var du har Makefilen.
Kommentarer, tips och rättelser
cykze: Kan ju tillägga att om man kör Debian eller någon annan Debian-baserad dist som t ex Ubuntu eller Knoppix så kan man köra: "apt-get install binutils-avr avr-libc gcc-avr" för att uppnå samma resultat. Lite smidigare kanske. Det är inte så bra att lägga program under sin hemkatalog. Utan du borde ha kört med /usr/local/ eller /opt/ som prefix istället. Sen vet jag inte om det är så okay att bara kopiera saknade programfiler så där. Programmen du kopierar är inte kompilerade med stöd för avr. Vad det har för betydelse kan jag dock inte säga. Är du säker på att t ex 'avr-ar' eller 'ar' inte skapas någonstans under /home/macce/ efter binutilskompileringen?
simon78: find ~ -name '*avr-ar*' -type f -print