Compilar e ligar aplicações com Makefiles

Quando você cria um aplicativo, você escrever seu código em vários arquivos de código fonte. Por um aplicativo, você pode ter muitos arquivos de código-fonte diferentes. Alguns grandes projetos corporativos podem ter centenas (ou milhares) de arquivos de código fonte com dezenas de programadores que trabalham em diferentes arquivos.

Como você pode imaginar, dezenas de programadores de temperamento forte que trabalham juntos faz para um grande aventura- mas usando ferramentas como faço, esses programadores são capazes de trabalhar facilmente em conjunto.

Para transformar esses arquivos de código-fonte em um único aplicativo, você precisa compilar e ligá-los.

Compilando significa transformar o seu código C ++ (ou qualquer linguagem que você está usando) para uma linguagem legível por máquina chamado Assembler. A linguagem Assembler difere entre os tipos de processadores. A maioria dos que estão lendo este livro, provavelmente, estão trabalhando em uma versão de um processador AMD ou Intel, de modo que os compiladores C ++ que você usa normalmente traduzir suas aplicações em código assembler (também chamado de código de máquina) que é apropriado para o processador no seu sistema.

Você também pode dizer ao compilador para atingir algum outro processador em muitos casos. O compilador enche todo este código assembler em um arquivo chamado arquivo de objeto e tipicamente nomes do arquivo o mesmo que o arquivo de código fonte original, mas com uma .obj ou .o extensão. Para cada arquivo de código fonte, o compilador faz um único arquivo objeto.

Depois de ter compilado todos os seus arquivos de código-fonte, você corre o vinculador. o vinculador leva os arquivos objeto e as combina em um único arquivo que você pode executar em seu computador. Este único arquivo geralmente recebe uma .exe extensão, que significa executable.

A origem deste termo vem execução, que se refere à execução de um aplicativo e provavelmente tinha algo a ver com o que o usuário da primeira aplicação informática queria fazer para o programador depois de usar o aplicativo.

O vinculador pode produzir outros tipos de arquivos de saída. Por exemplo, você pode criar um .lib (Biblioteca) ou .dll (Dynamic Link Library, ou DLL) arquivo. Esses arquivos contêm código executável, assim como o arquivo .exe faz, mas você não executá-los como arquivos autônomos - uma .exe arquivo normalmente carrega-los e usa o código executável que eles contêm.

O compilador também insere no objeto arquivos uma grande quantidade de informações, além do código assembler. Por exemplo, quando você ainda está em processo de desenvolvimento de seu aplicativo, você pode instruir o compilador para colocar informações de depuração no arquivo. (Embora, por vezes, as informações de depuração vai em um file- separado que depende do compilador.)

informações de depuração inclui os nomes de suas variáveis ​​e os números de linha do código-fonte. Quando você usa uma ferramenta depurador, essa ferramenta sabe sobre o seu código de olhar para as informações de depuração.

O compilador também coloca informações sobre o código, como os nomes dos itens que ocorrem, em outros arquivos de código fonte. Por exemplo, se você estiver escrevendo código que chama o código em outro arquivo de código fonte, o compilador inclui o nome do que o código no arquivo do objeto. Dessa forma, o ligante pode conectar os dois.

Finalmente, um compilador pode adicionar recursos para os arquivos objeto, tais como gráficos e sons que seu aplicativo requer. Esses recursos aparecem como dados que o aplicativo acessa mais tarde. Dados aparecem em áreas separadas de código executável dentro do arquivo, mas você não precisa se preocupar com a organização de arquivos objeto - o compilador cuida do gerenciamento de código e dados para você.

menu