Capítulo 2. Código de Construção com GCC


Este capítulo descreve situações em que o código fonte deve ser transformado em código executável.

2.1. Relação entre as formas de código

Pré-requisitos

  • Entendendo os conceitos de compilação e vinculação

Possíveis formas de código

Os idiomas C e C++ têm três formas de código:

  • Source code escrito na língua C ou C }, presente como arquivos de texto simples.

    Os arquivos normalmente usam extensões como .c, .cc, .cpp, .h, .hpp, .i, .inc. Para uma lista completa das extensões suportadas e sua interpretação, consulte as páginas do manual do gcc:

    $ homem gcc
  • Object code, criado por compiling o código fonte com um compiler. Esta é uma forma intermediária.

    Os arquivos de código objeto utilizam a extensão .o.

  • Executable code, criado por linking código objeto com um linker.

    Os arquivos executáveis de aplicativos Linux não utilizam nenhuma extensão de nome de arquivo. Os arquivos executáveis de objetos compartilhados (biblioteca) usam a extensão de nome de arquivo .so.

Nota

Também existem arquivos de biblioteca para ligação estática. Esta é uma variante do código do objeto que usa a extensão do nome do arquivo .a. A vinculação estática não é recomendada. Veja Seção 3.2, “Ligação estática e dinâmica”.

Manuseio de formulários de código no GCC

A produção de código executável a partir do código fonte é realizada em duas etapas, que requerem aplicações ou ferramentas diferentes. O GCC pode ser usado como um driver inteligente tanto para compiladores quanto para linkers. Isto permite utilizar um único comando gcc para qualquer uma das ações necessárias (compilação e link). GCC seleciona automaticamente as ações e sua seqüência:

  1. Os arquivos fonte são compilados para objetos de arquivos.
  2. Os arquivos objetos e bibliotecas estão ligados (incluindo as fontes compiladas anteriormente).

É possível executar o GCC para que ele execute somente a etapa 1, somente a etapa 2, ou ambas as etapas 1 e 2. Isto é determinado pelos tipos de entradas e tipo de saída(s) solicitada(s).

Como os projetos maiores requerem um sistema de construção que normalmente executa GCC separadamente para cada ação, é melhor considerar sempre a compilação e a ligação como duas ações distintas, mesmo que GCC possa executar ambas de uma só vez.

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.