Introdução ao compilador gnu gcc


{getToc} $title={Índice}

Introdução 

O presente artigo tem como finalidade apresentar o GCC (GNU Compiler Collection) de forma introdutória e mostar a compilação de uma aplicação basica.

O blog microprogramador tem a intenção de desenvolver uma série de posts sobre GCC, com conteúdos intermediários e avançados, assim como outras ferramentas de compilação.

O que é GCC?

GCC é uma sigla abreviada de "GNU Compiler Collection", ele é um compilador que foi desenvolvido inicialmente para compilar programas da linguagem C, porem com o passar do tempo ganhou suporte para outras linguagens como:

  • C++ (G++)
  • Fortran (GFortran)
  • Ada (GNAT)
  • Java (GCJ)
  • Pascal
  • entre outras
O GCC também é capaz de realizar compilações cruzadas (cross compilation) e tem suporte a várias arquiteturas como: 

Instalando o GCC

Por padrão o GCC já vem instalado em alguns sistemas operacionais (linux), para validar se o compilador já está instalado no computador utilizaremos o comando a seguir.

```bash
gcc --version
```

Exemplo de saída :
```terminal
<pre><font color="#4E9A06"><b>brunolima@OptiPlex-7020</b></font>:<font color="#3465A4"><b>~</b></font>$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
</pre>
```

Note que o comando "--version" traz informações sobre o sistema operacional da máquina e a versão do compilador instalada, no exemplo a versão é 9.4.0.

Para mais informações sobre atributos de entrada basta utilizar a opção "--help", como apresentado abaixo.

```bash
gcc --help
```

Exemplo de saída :
```terminal
<pre><font color="#4E9A06"><b>brunolima@OptiPlex-7020</b></font>:<font color="#3465A4"><b>~</b></font>$ gcc --help
Usage: gcc [options] file...
Options:
  -pass-exit-codes         Exit with highest error code from a phase.
  --help                   Display this information.
  --target-help            Display target specific command line options.
  --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...].
                           Display specific types of command line options.
  (Use &apos;-v --help&apos; to display command line options of sub-processes).
  --version                Display compiler version information.
  -dumpspecs               Display all of the built in spec strings.
  -dumpversion             Display the version of the compiler.
  -dumpmachine             Display the compiler&apos;s target processor.
  -print-search-dirs       Display the directories in the compiler&apos;s search path.
  -print-libgcc-file-name  Display the name of the compiler&apos;s companion library.
  -print-file-name=&lt;lib&gt;   Display the full path to library &lt;lib&gt;.
  -print-prog-name=&lt;prog&gt;  Display the full path to compiler component &lt;prog&gt;.
  -print-multiarch         Display the target&apos;s normalized GNU triplet, used as
                           a component in the library path.
</pre>
```

Caso seu computador não possua o GCC nativo, instale-o seguindo o guia installing GCC.

Exemplo de compilação com GCC 

Para demostração básica de utilização do GCC será desenvolvido um código em c, que em sua função principal (main) apenas estará contigo um comando de print.

Código exemplo para a compilação: 
```c
#include <stdlib.h>
#include <stdio.h>

int main(void *arg)
{
printf("test gcc compiler !!!\n\n");
return 0;
}
```

Para compilar use:
```bash
gcc -o test test.c 
```

Onde:

  • gcc : comando para utilizar o compilador.
  • -o : especifica a saída.
  • test : nome do executável (pode se passar o caminho onde deseja gerar).
  • test.c : arquivo source a ser compilado.

A compilação resultará em um arquivo executável, como apresentado a seguir:
```terminal
<pre><font color="#4E9A06"><b>brunolima@OptiPlex-7020</b></font>:<font color="#3465A4"><b>~/microprogramador</b></font>$ ll
total 32
drwxrwxr-x  2 brunolima brunolima  4096 set 14 14:05 <font color="#3465A4"><b>.</b></font>/
drwxr-xr-x 49 brunolima brunolima  4096 set 14 14:05 <font color="#3465A4"><b>..</b></font>/
-rwxrwxr-x  1 brunolima brunolima 16696 set 14 14:05 <font color="#4E9A06"><b>test</b></font>*
-rw-rw-r--  1 brunolima brunolima    94 set 14 14:05 test.c</pre>

```

Após compilar execute o arquivo:
```bash
./test
```

Saída obtida:
```terminal
<pre><font color="#4E9A06"><b>brunolima@OptiPlex-7020</b></font>:<font color="#3465A4"><b>~/microprogramador</b></font>$ ./test 
test gcc compiler !!!

</pre>
```

Os desenvolvedores utilizam muito os ambientes de desenvolvimento integrado (IDE) e frameworks, que acabam mascarando o uso dos compiladores, porem é de suma importância o conhecimento e a manipulação dos arquivos de compilação, só assim o programador saberá rastrear com mais precisão e eficiência os possíveis erros gerados na etapa de compilação.

Bruno Lima

Engenheiro de computação atuando em desenvolvimento de sistemas embarcados (Firmware) com microcontroladores e processadores (Linux Embarcado). Contribuidor de projetos públicos e fóruns de c/c++. linkedin github

Postar um comentário

Deixe seu comentário ou sua sugestão!

Postagem Anterior Próxima Postagem

Formulário de contato