Montando un toolchain con crosstool-ng a través de samples

written by uve 2 March 2011

Ayer terminaba un artículo acerca de cómo construir un toolchain con crosstool-ng, pero ahora voy a explicar como utilizar uno de los ejemplos disponibles para partir desde una base concreta. Como ya comentaba, en la página de croostool-ng hay disponible una serie de ejemplos desde los cuales podemos partir.

Para listar todos los samples disponibles, basta con ejecutar lo siguiente:

$ ct-ng list-samples
Sample name                           Status
alphaev56-unknown-linux-gnu           [G X]
arm-bare_newlib_cortex_m3_nommu-eabi  [G X]
arm-cortex_a8-linux-gnueabi           [G  ]
arm-davinci-linux-gnueabi             [G  ]
arm-iphone-linux-gnueabi              [G X]
arm-unknown-eabi                      [G  ]
arm-unknown-linux-gnueabi             [G  ]
arm-unknown-linux-uclibcgnueabi       [G X]
armeb-test_nptl-linux-uclibcgnueabi   [G X]
armeb-unknown-eabi                    [G  ]
armeb-unknown-linux-gnueabi           [G X]
armeb-unknown-linux-uclibcgnueabi     [G X]
avr32-unknown-none                    [G X]
bfin-unknown-linux-uclibc             [G  ]
i586-geode-linux-uclibc               [G  ]
i586-mingw32msvc,i686-none-linux-gnu  [G X]
i686-nptl-linux-gnu                   [G X]
i686-pc-mingw32                       [G X]
m68k-unknown-elf                      [G X]
mips-ar2315-linux-gnu                 [G X]
mips-unknown-elf                      [G  ]
mips-unknown-linux-uclibc             [G  ]
mips64el-n32-linux-uclibc             [G X]
mips64el-n64-linux-uclibc             [G X]
mipsel-unknown-linux-gnu              [G  ]
powerpc-405-linux-gnu                 [G  ]
powerpc-860-linux-gnu                 [G  ]
powerpc-e500v2-linux-gnuspe           [G X]
powerpc-unknown-linux-gnu             [G  ]
powerpc-unknown-linux-uclibc          [G  ]
powerpc-unknown_nofpu-linux-gnu       [G  ]
powerpc64-unknown-linux-gnu           [G X]
s390-ibm-linux-gnu                    [G X]
s390x-ibm-linux-gnu                   [G X]
sh4-unknown-linux-gnu                 [G  ]
x86_64-unknown-linux-gnu              [G  ]
x86_64-unknown-linux-uclibc           [G  ]
      L (Local)       : sample was found in current directory
      G (Global)      : sample was installed with crosstool-NG
      X (EXPERIMENTAL): sample may use EXPERIMENTAL features
      B (BROKEN)      : sample is currently broken

Aquí bastará con elegir uno de ellos (esto ya dependerá de la plataforma para la que queramos generar el toolchain), y el generará automáticamente los ficheros con una configuración inicial desde la que partir:

$ cd toolchain
$ mkdir mips-unknown-linux-uclibc
$ cd mips-unknown-linux-uclibc/
$ ct-ng mips-unknown-linux-uclibc
  MKDIR kconfig
  DEP   kconfig/conf.dep
  DEP   kconfig/zconf.tab.dep
  CC    kconfig/zconf.tab.o
  CC    kconfig/conf.o
  LD    kconfig/conf
  LN    config
  MKDIR config.gen
  IN    config.gen/arch.in
  IN    config.gen/kernel.in
  IN    config.gen/cc.in
  IN    config.gen/libc.in
  IN    config.gen/debug.in
  CONF  config/config.in
***********************************************************
Initially reported by: YEM
URL: http://ymorin.is-a-geek.org/
***********************************************************
Now configured for "mips-unknown-linux-uclibc"

A partir de aquí, podemos continuar un proceso normal. Si queremos modificar alguna opción del ejemplo elegido, basta con ejecutar:

$ ct-ng menuconfig

O si no, podemos pasar directamente a compilar, como hicimos en el tutorial anterior:

$ ct-ng build

Tags

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.