主要根据
http://www.nongnu.org/avr-libc/user-manual/install_tools.html
进行操作。其中 PREFIX 设定为 /opt/avr
首先现在的软件版本如下(除了 avr-libc,其余找了手头有的,没有下载最新代码):
avr-libc-1.6.8.tar.bz2 binutils-2.18.tar.bz2(后来换了2.19.1版本) gcc-4.3.3.tar.bz2
先编译 binutils,配置选项为:../configure --prefix=$PREFIX --target=avr --disable-nls
结果 make 的时候说找不到 makeinfo,一怒之下直接改了 Makefile,修改 MAKEINFO 变量,之后编译通过。
然后设置 PATH 环境变量:export PATH=$PREFIX/bin:$PATH
编译 gcc 的时候说需要 gmp 和 mpfr,直接使用了手头的 gmp-4.2.4.tar.bz2 和 mpfr-2.3.1.tar.bz2
gmp 的配置为 ./configure --prefix=$PREFIX --host=avr
mpfr 配置参数为 ./configure --prefix=$PREFIX --host=avr --with-gmp=$PREFIX
在编译 gcc 时的配置为:
../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ /
--disable-nls --disable-libssp --with-dwarf2 --with-gmp=$PREFIX --with-mpfr=$PREFIX
编译的时候还有错误: illegal opcode movw for mcu avr3,竟然是 binutils-2.18 的问题。
换了 binutils-2.19.1,也没有 makeinfo 的问题。编译 gcc 成功。
编译 avr-libc 采用参数如下:
./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
一切正常。只不过由于 gcc 没有打补丁,因此支持的 CPU 并不算多,但一般够用了,gcc 补丁的下载
地址为:
http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/patch-newdevices
最后把所有可执行文件 strip 一下:
find -executable -type f -exec strip {} /;