Criação de Toolchain de Compilação com crosstool-ng

De Wiki do Veiga

Tabela de conteúdo

Introducao

crosstool-NG é uma ferramenta para geração de toolchains.

Um toolchain de compilação é um conjunto de ferramentas que permite compilar código para um sistema. Basicamente, um toolchain consiste em um compilador (normalmente gcc), utilitários como assembler e linker (normalmente binutils) e uma biblioteca padrão C (por exemplo, GNU Libc, uClibc ou dietlibc).

Obtendo o crosstool-ng

O código fonte do crosstool-ng está armazenamento em um repositório do Mercurial. Então, é preciso instalar essa ferramenta:

sudo apt-get install mercurial mercurial-common

Obtendo o código fonte:

hg clone http://ymorin.is-a-geek.org/hg/crosstool-ng

Instalando

Algumas dependências podem ser necessárias caso ainda não tenham sido instaladas:

sudo apt-get install gcc g++ gawk libncurses5-dev bison flex curl cvs automake texinfo

Compilando:

cd crosstool-ng
./configure --prefix=/usr/bin
make
make install

Gerando um toolchain

ct-ng help
ct-ng menuconfig
ct-ng build

Toolchain pré-configurados

O crosstool-ng disponibiliza algumas opções de toolchain pré-configurados (samples).

Listar os samples disponíveis:

ct-ng list-samples
alphaev56-unknown-linux-gnu
arm-bare_newlib_cortex_m3_nommu-eabi
arm-cortex_a8-linux-gnueabi
armeb-unknown-eabi
armeb-unknown-linux-gnu
armeb-unknown-linux-gnueabi
armeb-unknown-linux-uclibc
armeb-unknown-linux-uclibcgnueabi
arm-iphone-linux-gnueabi
arm-unknown-eabi
arm-unknown-elf
arm-unknown-linux-gnu
arm-unknown-linux-gnueabi
arm-unknown-linux-uclibc
arm-unknown-linux-uclibcgnueabi
avr32-unknown-none
i586-geode-linux-uclibc
i686-nptl-linux-gnu
ia64-unknown-linux-gnu
mingw32,i686-none-linux-gnu
mips-ar2315-linux-gnu
mipsel-unknown-linux-gnu
mips-unknown-elf
mips-unknown-linux-uclibc
powerpc-405-linux-gnu
powerpc64-unknown-linux-gnu
powerpc-860-linux-gnu
powerpc-e500v2-linux-gnuspe
powerpc-unknown-linux-gnu
powerpc-unknown-linux-uclibc
powerpc-unknown_nofpu-linux-gnu
s390-ibm-linux-gnu
s390x-ibm-linux-gnu
sh4-unknown-linux-gnu
x86_64-unknown-linux-gnu
x86_64-unknown-linux-uclibc

Verificar informações de um dos samples:

ct-ng show-powerpc-unknown-linux-uclibc
    powerpc-unknown-linux-uclibc  [g  ]
    OS            : linux-2.6.31.1
    GMP/MPFR      : gmp-4.3.1 / mpfr-2.4.1
    binutils      : binutils-2.19.1
    C compiler    : gcc-4.2.4 (C,C++,Fortran)
    C library     : uClibc-0.9.30.1
    Tools         : sstrip dmalloc-5.5.2 duma-2_5_15 gdb-6.8 strace-4.5.18

Gerar um toolchain a partir de um sample.

ct-ng powerpc-unknown-linux-uclibc
ct-ng build

Para mais informações


Marcelo Veiga Neves < marcelo.veiga at gmail.com >

Ferramentas pessoais