Programar em C++/Compilação
De Wikibooks
Compilação é o processo de "tradução" do programa escrito em uma linguagem de programação para um formato no qual o computador entenda. A compilação gera um ficheiro - arquivo em português brasileiro - binário (executável) a partir do código fonte.
Tabela de conteúdo |
[editar] A tradução do código para o computador
Em C e C++ são 3 os programas usados para fazer a tradução do código fonte (que são as linhas de código que o programador escreve) num ficheiro executável, num ficheiro que o computador pode correr:
- Preprocessor - pré-processador
- Compiler - compilador
- Linker
[editar] Pré-processador
Este é um programa que busca no código fonte – no código que escrevemos – por directivas que foram dirigidas a ele, ou seja linhas iniciadas com “#”, assim o pré-processador sabe que aquela instrução é dirigida para ele. No exemplo tínhamos
- include <iostream>
Então o pré-processador o que faz é incluir ficheiros localizados no ficheiro iostream Então tínhamos o código fonte que depois é transformado num outro código fonte de acordo com as diretivas pré-processadas
[editar] Compilador
Compilador é um programa que pega código fonte preprocessado e o traduz em instruções de linguagem de máquina, linguagem que o computador entende. Estas são guardadas num ficheiro á parte, chamado de object file e tem a extensão .o ou .obj dependendo do compilador. Existem diferentes compiladores para diferentes linguagens de programação. Essa tradução é feita se o código estiver na linguagem própria á linguagem. Existem regras de escrita e de gramática. No caso de existir um erro de sintaxe, então dará um erro de compilação.
[editar] Linker
Apesar do nosso object file ter as instruções em linguagem máquina, o computador ainda não poder correr como um programa. A razão é que é necessário outro código da biblioteca, que é o código do run-time library, que é para as operações comuns tipo a tradução o input do teclado ou a capacidade para interagir com hardware externo tipo o monitor para apresentar uma mensagem. Estas bibliotecas run-time costumam já estar instaladas com o sistema operativo, caso isso não aconteça teremos de fazer o dowload delas. Então o resultado da combinação do object file com as partes necessárias da biblioteca run-time fazem finalmente a criação de um ficheiro executável com a extensão .exe
[editar] Processo de compilação
Em primeiro lugar, vamos escrever um código que está na linguagem C++ e vamos gravar esse código todo num ficheiro, que é uma quantidade de memória no computador. Esse ficheiro fica com a terminação “.CPP” ou .CP ou C.. Chama-se a este conjunto de linhas que escrevemos de, código fonte ou source code (pode ter a terminação “.c”, “.cpp”, e “.cc” - estas extensões dependem do compilador que se utiliza). Esse souce code é de alguma forma críptica e para alguém que não saiba de c++ no entanto é aquilo que neste momento chamamos de humam readable form.
Para tornar o nosso source code num programa usamos um compiler que irá produzir um object file. Este ficheiro tem normalmente a extensão. OBJ porém ainda não temos um programa executável. Para isso vamos utilizar o linker. Uma das vantagens do c++ é que usufrui de uma estrutura multi-file. A linguagem permite compilação separada, onde partes do programa total podem estar numa ou mais source files e estes podem ser compilados independentemente de cada um. A ideia é que o processo de compilação produz files que depois podem ser linked together usando um editor de link ou loades que o sistema provem.
Os programas feitos em c++ são tipicamente ficheiros .OBJ ligados uns aos outros com uma ou mais libraries. Estas são uma colecção de linkable files que nós criámos ou que foram fornecidas (vêm com o compilador ou compramos).
Depois de se fazer este linking é que obtemos ums ficheiros com a terminação “.exe”. Só assim é que o sistema operativo reconhece o programa como independente.
Os compiladores actuais incluem também pré-compiladores, (ou pré-processadores) (antes eram software independente, extra), estes precompiladores vão fazer alterações ao código fonte, que basicamente consistem em eliminar pedaços de código que escrevemos, e/ou substituir pedaços de código que escrevemos por outro (copy-paste), enfim, é alterar o código fonte por outro código fonte. Depois é que se compila.
---

