Прежде всего нам понадобится linux с установленными пакетами:
• gnu-make
• C++
• g++
• ncurses-dev
• zlib-dev
• gawk
• bison
• flex
• unzip
• bzip2
• patch
• perl
• wget
• gnutar
• svn
• autoconf
• gnu-find
Так же, нам понадобится патченные исходники ядра linux, которые можно получить из каталога $srcroot$/broadcom/src/linux/linux (вместо $srcroot$ - подставляете ваш каталог с исходниками), после обязательного выполнения пунктов инструкции по самостоятельной сборке прошивки (
http://code.google.com/p/wl500g/wiki...CustomFirmware) до 4.1 включительно.
Первым делом, нам следует из-под root создать каталог /opt и дать на него полные права всем пользователям! Если в каталоге /opt уже находится подкаталог brcm, то его следует переименовать или удалить. Пользователь, под которым мы собираемся собирать toolchain, не должен обладать правами root.
1. В домашнем каталоге пользователя создаем каталог toolchain, все дальнейшие действия производим в нем
2. В каталоге, созданном в п.1 создаем каталог temp
3. Получаем исходники toolchain из svn в каталог src:
svn checkout
http://wl500g.googlecode.com/svn/toolchain src
4. Заходим в каталог src и копируем файл конфигурации: cp defconfig .config
5. редактируем .config следующим образом:
CONFIG_EXTERNAL_KERNEL_TREE="$srcroot$/broadcom/src/linux/linux" – путь к каталогу с исходниками ядра linux
CONFIG_DOWNLOAD_FOLDER="$userhome$/toolchain/temp" – каталог для скачиваемых архивов (чтобы не скачивать их дважды…)
CONFIG_GCC_VERSION="4.1.2" версия GCC при первом проходе или "3.4.6" при втором.
CONFIG_BINUTILS_VERSION="2.19.1" – версия binutils, по-желанию, 2.17 или 2.19.1.
6. Собираем версию toolchain c gcc 4.1.2: make V=99 – готовый toolchain будет в каталоге /opt/brcm/hndtools-mipsel-uclibc-4.1.2
7. редактируем .config следующим образом:
CONFIG_GCC_VERSION="3.4.6"
8. Собираем версию toolchain c gcc 3.4.6:
make clean
make dirclean
make V=99
готовый toolchain будет в каталоге /opt/brcm/hndtools-mipsel-uclibc-3.4.6
9. Объединяем версии 4.1.2 и 3.4.6:
a. Копируем бинарник из дерева 3.4.6/bin в 4.1.2/bin
/opt/brcm/hndtools-mipsel-uclibc-4.1.2/bin/mipsel-linux-uclibc-gcc-3.4.6
/opt/brcm/hndtools-mipsel-uclibc-4.1.2/bin/mipsel-linux-gcc-3.4.6
b. Удаляем mipsel-linux-uclibc-gcc из 4.1.2/bin
c. Создаем симлинки в 4.1.2/bin
mipsel-linux-uclibc-gcc -> mipsel-linux-uclibc-gcc-4.1.2
mipsel-linux-gcc-3.4.6 -> mipsel-linux-uclibc-gcc-3.4.6
mipsel-uclibc-gcc-3.4.6 -> mipsel-linux-uclibc-gcc-3.4.6
mipsel-uclibc-gcc-4.1.2 -> mipsel-linux-uclibc-gcc-4.1.2
d. Копируем недостающие файлы из дерева 3.4.6 в 4.1.2:
/opt/brcm/hndtools-mipsel-uclibc-3.4.6/include/c++/3.4.6
/opt/brcm/hndtools-mipsel-uclibc-3.4.6/lib/gcc/mipsel-linux-uclib/3.4.6
/opt/brcm/hndtools-mipsel-uclibc-3.4.6/libexec/gcc/mipsel-linux-uclib/3.4.6
/opt/brcm/hndtools-mipsel-uclibc-3.4.6/info/cppinternals.info
/opt/brcm/hndtools-mipsel-uclibc-3.4.6/info/gccint.info
e. Удаляем директорию /opt/brcm/hndtools-mipsel-uclibc-3.4.6
Ваш новый toolchain готов!
Скрипт для сборки