LFS: O que é o toolchain e por que é importante?

1

Estou passando pelo Linux do Scratch e estou na página que discute o conjunto de ferramentas. Até aqui entendi tudo, mas não entendo o termo "toolchain".

Pelo que eu li, o toolchain é um conjunto de ferramentas que serão usadas para compilar ferramentas na nova distribuição. Isso é necessário para que o software não seja compilado com o compilador do host.

Estou correto em pensar que as ferramentas de hosts (eu acredito que é o compilador que está sendo construído nesta fase) tem que ser usado para compilar Glibc, Binutils etc? E então, uma vez feito isso, o compilador recém-compilado é usado para construir outras ferramentas para criar o SO?

Essa parte é muito superficial, e pesquisar no Google não está gerando resultados úteis. Se alguém tiver algum recurso útil para compartilhar, isso me ajudará a entender melhor isso.

    
por BugHunterUK 07.08.2016 / 13:58

2 respostas

3

O conjunto de ferramentas é simplesmente uma ferramenta para construir software (compilador, montador, vinculador, bibliotecas e alguns utilitários úteis).

Neste caso, a parte importante é independente do host - independente das ferramentas baixadas.

Existem vários motivos pelos quais você pode querer recriar as ferramentas:

  • É mais difícil entrar em backdoors (embora não seja impossível)
  • Os parâmetros de compilação podem ser ajustados para se adequarem ao seu sistema e não apenas serem um binário geral.
  • Você obtém a versão mais recente das ferramentas.
por 07.08.2016 / 16:27
1

O LFS recria o conjunto de ferramentas (isto é, o compilador, o vinculador, o montador e as bibliotecas usadas por todos eles) três vezes:

  • A primeira vez usa o conjunto de ferramentas do sistema host para criar um novo conjunto de ferramentas ( gcc , ld , binutils , glibc , etc) no sistema de destino. Essas ferramentas serão vinculadas a bibliotecas compartilhadas no sistema host, o que não estaria presente se você inicializasse em seu sistema de destino no momento. Então ...
  • A segunda vez que o conjunto de ferramentas é construído nas bibliotecas instaladas na máquina de destino. Isso significa que o conjunto de ferramentas funcionará se você inicializar no sistema de destino, mas ainda há alguma possibilidade de que as coisas possam estar vinculadas ao sistema host e independentemente de o conjunto de ferramentas ainda estar compilado com otimizações direcionadas ao sistema host e não ao sistema de destino. Então ...
  • A terceira vez é o charme e, desta vez, o conjunto de ferramentas será completamente "limpo" de todos os links ou anexos do sistema host e otimizado para o sistema de destino.

Esta é talvez a parte mais importante da construção de um sistema LFS, e é muito importante prestar muita atenção nas instruções. Em todos os sistemas LFS que construí (quatro até hoje), esta foi a única seção em que encontrei problemas. Às vezes, esses problemas só aparecem muito mais tarde, o que, como você pode imaginar, é muito frustrante.

    
por 07.08.2016 / 20:22