Para começar,baixe a última versão do crosstool-ng
Em seguida descompacte o pacote e navegue até a pasta extraída:
$ tar -xjf crosstool-ng-x.y.z.tar.bz2 cd crosstool-ng-x.y.z/
Configure e instale a ferramenta :
$ ./configure --prefix=$HOME/crosstool-ng-x.y.z make make install export PATH=$PATH:$HOME/crosstool-ng-x.y.z/bin
Agora,nicialize o menu de configuração da aplicação:
$ ct-ng menuconfig
Neste passo,vamos ajustar os parâmetros da ferramenta para as necessidades do nosso projeto.No meu caso,eu precisava de uma toolchain que gerasse um binário para que rodasse num processador arm-cortex_a8,com suporte a operações em hard-float.
As configurações abaixo são para este caso específico,você deve fazer as alterações necessárias para a seu projeto.
Target :
- Target Architecture(arm); Use the MMU;
- Emit Assembly for CPU(cortex-a8);
- Tune for CPU(cortex-a8);
- Use specific FPU(neon);
- Floating point(hardware(FPU));
- Use EABI;
Toolchain :
- sysroot'ed directory name(sysroot);
- Tuple's vendor string(cortex_a8);
- Type(Cross);
- Target OS(linux);
- Linux kernel version(2.6.33.20);
- Build shared libraries(*);
- Check installed headers(*);
- Binary format(ELF);
- binutils version(2.21.1a);
- Linkers to enable(ld);
- C compiler(gcc); gcc version (4.6.3);
- C++[*];
- Core gcc extra config(--with-float=hard);
- gcc extra config(--with-float=hard);
- Link libstdc++ statically into gcc binary(*);
- Enable GRAPHITE loop optimizations(*);
- Enable LTO(*); Optimize gcc libs for size(*);
- Use __cxa_atexit(*);
- C library(glibc);
- Retrieval method(Released tarball);
- glibc version (2.14.1);
$ ct-ng build
O processo pode levar vários minutos.
Para utilizar a toolchain gerada,adicione e a seguinte linha ao arquivo /etc/bash.bashrc:
$ export PATH=$PATH:/pasta/da/toolchain/bin
substituindo
/pasta/da/toolchain
pela localização da sua toolchain.Se você não sabe onde ela está,ela provavelmente está dentro da pasta do crostool-ng.Caso você precise adicionar a toolchain a um projeto utilizando o cmake,navegue até a pasta do projeto e crie um arquivo com o nome toolchain.cmake.
Adicione nele o seguinte:
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-cortex_a8-linux-gnueabi-gcc )
set( CMAKE_CXX_COMPILER arm-cortex_a8-linux-gnueabi-g++ )
set( CMAKE_FIND_ROOT_PATH /pasta/da/toolchain/bin )
Agora você fazer o cmake utilizar sua toolchain ao invés do compilador normal adicionando o seguinte parâmetro:
cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..
Pronto,agora é só aproveitar a sua toolchain linda,bonita e joiada.