在ubuntu12.04上面交叉编译gcc for avr,也就是我们所说的avr-gcc。
在安装之前需要准备的工具,gcc-core-4.5.1 bintils-2.20 avr-libc-1.8.0
还有必须要安装的工具,及库:gmp-4.3.2 mpfr-2..4.2 mpc-0.8.1
还要安装一些工具automake autoconf 。还有libgmp-dev_5.0.2+dfsg-2ubuntu1_i386.deb、libgmp3-dev_5.0.2+dfsg-2ubuntu1_i386.deb、libppl-c2_0.10.2-10ubuntu1_i386.deb、libppl7_0.10.2-10ubuntu1_i386.deb、libppl0.10-dev_0.10.2-10ubuntu1_i386.deb、libcloog-ppl-dev_0.15.9-2_i386.deb、libcloog-ppl0_0.15.9-2_i386.deb.
PATH=/usr/local/atmel:$PATH加入到profile文件中
一、编译bintils-2.20:
cd bintils-2.20
mkdir bintils-build
cd bintils-build
../configure --prefix=/usr/local/atmel --target=avr --disable-nls --disable-werror
二、编译gcc-core-4.5.1
在这之前要安装好gmp mpfr和mpc三个库
cd gmp-4.3.2
mkdir gmp-build
cd bmp-build
../configure --prefix=/usr/local/gmp-4.3.2
make
sudo make install
cd mpfr-2.4.2
mkdir mpfr-build
cd mpfr-build
../configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
make
sudo make install
cd mpc-0.8.1
mkdir mpc-build
cd mpc-build
../configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2
make
sudo make install
弄好这三个库之后,不要忘记把库的路径加入到/etc/ld.so.conf.d/下面的文件中,然后
sudo ldconfig -v
编译gcc
cd gcc-4.5.1
mkdir gcc-build
cd gcc-build
../configure --prefix=/usr/local/atmel --target=avr --enable-languages=c --disable-nls --disable-libssp --with-dwarf2 --with-gmp=/usr/local/gmp-4.3.2 \
--with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1 --disable-werror
make all-gcc
sudo make install-gcc
make all-target-libgcc
sudo make install-target-libgcc
三、编译avr-libc
cd avr-libc-1.8.0
mkdir avr-libc-build
cd avr-libc-build
../configure --prefix=/usr/local/atmel --build=`../config.guess` --host=avr
make
make install
这个时候如果你没有修改过gcc-4.5.1/gcc/config/avr/下面的avr-devices.c和t-avr两个文件的话,编译出错,因为
gcc下面缺少了某些设备的定义。
编译avr-libc,出现了好多未定义的设备错。现在我们需要来修改gcc-4.5.1/gcc/config/avr/下面的avr-devices.c文件和t-avr文件。这两个文件我已经修改好了。下载后覆盖里面的就行了。
然后回到gcc-builc目录,这次不用重新配置了,只需要:
make all-gcc
sudo make install-gcc
make all-target-libgcc
sudo make install-target-libgcc
然后再回到 ave-libc-build的目录:
make
sudo make install
这次应该是能正常的编译了,但是make install的时候/bin/bash说找不到ranlib命令,这个命令已经在PATH中了啊,为什么找不到呢?呵呵,因为这个脚本执行的时候是在root用户下面,所以:
sudo -i
输入密码切换到了root用户,然后:
make install
是不是ok了。
现在avrl-ibc已经编译好了。