Compilar Programas
A Compilação é um processo natural e vital em cada sistema operacional que começa na instalação do SO(Sistema Operacional) até sua descontinuação pelo seu desenvolvedor e/ou usuário.
Por que não é familiar?
A maioria de nos inicia com um Windows e aprendi a baixar programas já compilados ou com instaladores que não especificam suas operações internas, mas isso é um erro? Não, a responsabilidade de mostrar ao usuário oque você como desenvolvedor esta operando na maquina do usuário de modo que qualquer um entenda não e sua responsabilidade, mas convenhamos que isso poderia trazer uma nova visão de usuários e também permitir que usuários possam resolver problemas do software em relação ao seu computador.
Operações internas
Por mais magico que um compilador possa parecer o mesmo também é um programa que assim como todos os outros foi compilado.
Para ser mais especifico vou abortar as operações básicas de um compilador e no fim vamos compilar um gcc.
Leitura do código e sintaxe
Nessa etapa as linhas de código são lidas e a sintaxe da linguagem é aplicada , por exemplo abrir chaves( {
) deve ser seguido por um fechar chaves( }
) identificando um bloco de execução.
É e nessa etapa aonde entra os analisadores Léxico, sintático, semântico e o gerador de código.
Analisador Léxico responsável por organizar as palavras e símbolos reservados da linguagem como function
.
Analisador Sintático se encarrega de verificar a sequencia de símbolos esta correta como +, -, *, / e etc
, exemplo: val0 + val1 == 22
.
Por fim o analisador Semântico gera um mapa(Uma estrutura de dados) com a estrutura do programa e o gerador de código lé a estrutura passando da estrutura para uma linguagem de baixo nível seja ela C ou Assemble para por fim montar ou chamar um compilador que monte o programa uma descrição mais completa se encontra nesse link.
Compilando GCC
Em desenvolvimento consulte OSdev.org para mais informações
Primeiramente precisamos Obter o compilador GCC para isso execute:
Depois de obter o arquivos gcc-10.1.0.tar.gz
, vamos descompacta-lo usando o comando:
Agora, Vamos compilar e por fim rodar uma aplicação
Opções utilizadas:
--target=i686-elf #Arquitetura
--prefix="$HOME/build" # Local da instalação
--enable-languages=c,c++ # Linguagens que serão suportadas
--without-headers # diz ao GCC para não confiar em nenhuma biblioteca C (padrão ou tempo de execução) presente já que sera um compilador cruzado
Agora vamos compilar e mover para o diretório de instalação, Alias isso pode demorar bastante.
Mas já podemos compilar um hellowWord.o
? Não, falta um conjunto de bibliotecas e ferramentas para lincar as bibliotecas e etc ao executável.
Vamos começar por compilar e implementar o Binutis para obter as ferramentas.
Em desenvolvimento
Last updated