Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
gcc_linux [d/mY H:i]
laureano
gcc_linux [d/mY H:i] (atual)
laureano
Linha 1: Linha 1:
 ====== Compilando no Linux ====== ====== Compilando no Linux ======
  
 +===== GCC =====
  
 Compilar é transformar um arquivo legível para o homem (chamado de código-fonte,​ //source file// em inglês) para um arquivo legível para a máquina (binário, binary). Quem faz esse trabalho é o compilador. ​ Compilar é transformar um arquivo legível para o homem (chamado de código-fonte,​ //source file// em inglês) para um arquivo legível para a máquina (binário, binary). Quem faz esse trabalho é o compilador. ​
  
-O compilador C/C++ padrão no Linux é o gcc. Muitas distribuições vêm o gcc incluído. O Compilador gcc é um dos compiladores mais versáteis e avançados existentes. O gcc suporta todos os padrões modernos do C atualmente usados, como o padrão ANSI C, assim como muitas extensões específicas do próprio gcc. Utilizar o gcc é simples. Vejamos alguns exemplos:+O compilador C/C++ padrão no Linux é o **''​gcc''​**. Muitas distribuições vêm o ''​gcc'' ​incluído. O Compilador ​''​gcc'' ​é um dos compiladores mais versáteis e avançados existentes. O ''​gcc'' ​suporta todos os padrões modernos do C atualmente usados, como o padrão ​//ANSI C//, assim como muitas extensões específicas do próprio ​''​gcc''​. Utilizar o ''​gcc'' ​é simples. Vejamos alguns exemplos:
  
-Compila o programa hello.c e cria o binário hello (opção ''​–o''​ do gcc)+Compila o programa ​''​hello.c'' ​e cria o binário ​''​hello'' ​(opção ​**''​–o''​** do ''​gcc''​)
  
-''​$> gcc hello.c –o hello''​+<code> 
 +gcc hello.c –o hello 
 +</​code>​
  
-Compila 2 programas (prog1.c e prog2.c) e cria o binário programa. +Compila 2 programas (''​prog1.c'' ​''​prog2.c''​) e cria o binário ​''​programa''​
-$> gcc prog1.c prog2.c –oprograma+<code> 
 +gcc prog1.c prog2.c –oprograma 
 +</​code>​
  
-Compila o programa fat.c, gera o binário fat e indica para o compilador linkeditar a biblioteca matemática junto com binário (opção –l do gcc). +Compila o programa ​''​fat.c''​, gera o binário ​''​fat'' ​e indica para o compilador linkeditar a biblioteca matemática junto com binário (opção ​**''​–l''​** ​do gcc). 
-$> gcc fat.c –o fat –lm+<code> 
 +gcc fat.c –o fat –lm 
 +</​code>​
  
-Compila o programa def.c, gera o binário def e cria a diretiva ​ PLATAFORMA (opção –D do gcc) com o valor Linux (veja o funcionamento ​no capítulo de Pré-compilação). +Compila o programa ​''​def.c''​, gera o binário ​''​def'' ​e cria a diretiva ​''​PLATAFORMA'' ​(opção ​**''​–D''​** ​do ''​gcc''​) com o valor Linux (veja o funcionamento ​em [[pre_compilacao|Pré-compilação]]). 
-$> gcc def.c –DPLATAFORMA=Linux –odef+<code> 
 +gcc def.c –DPLATAFORMA=Linux –odef 
 +</​code>​
  
-Compila o programa inc.c, gera o binário inc. A opção –I indica o caminho para os includes (headers) do específicos do projeto e a opção –L indica o caminho das bibliotecas específicas do projeto. +Compila o programa ​''​inc.c''​, gera o binário ​''​inc''​. A opção ​**''​–I''​** ​indica o caminho para os ''​includes'' ​(//headers//) do específicos do projeto e a opção ​**''​–L''​** ​indica o caminho das bibliotecas específicas do projeto. 
-$> gcc inc.c –I../​includes –L../libs –lmylib –o../​bin/​inc ​+<code> 
 +gcc inc.c –I../​includes –L../libs –lmylib –o../​bin/​inc ​ 
 +</​code>​
  
-Compila o progr1.c e gera o binário progr1. A opção –O é para otimização do código gerado. +Compila o ''​progr1.c'' ​e gera o binário ​''​progr1''​. A opção ​**''​–O''​** ​é para otimização do código gerado. 
-$gcc –O –oprogr1 progr1.c +<​code>​ 
- +$ gcc –O –oprogr1 progr1.c 
-O libc (glibc) é uma biblioteca usada por quase todos os programas do Linux; o libjpeg é usada em todos os programas que trabalham com o formato JPEG; e assim por diante. No sistema Linux essas bibliotecas são divididas em dois pacotes: um para ser usado por programas já compilados (glibc e libjpeg, por exemplo), e um para ser usado na compilação de programas que dependem dele (glibc-devel e libjpeg-devel,​ por exemplo). Portanto, para compilar programas mais complexos, será necessário ter esses dois pacotes instalados.+</​code>​
  
 +O ''​libc''​ (''​glibc''​) é uma biblioteca usada por quase todos os programas do Linux; o ''​libjpeg''​ é usada em todos os programas que trabalham com o formato JPEG; e assim por diante. No sistema Linux essas bibliotecas são divididas em dois pacotes: um para ser usado por programas já compilados (''​glibc''​ e ''​libjpeg'',​ por exemplo), e um para ser usado na compilação de programas que dependem dele (''​glibc-devel''​ e ''​libjpeg-devel'',​ por exemplo). Portanto, para compilar programas mais complexos, será necessário ter esses dois pacotes instalados.
  
-Se o programa é constituído por vários arquivos, e normalmente usam bibliotecas e header-files externos, será necessário compilar todos eles e juntá-los (link) corretamente. Para automatizar esse procedimento,​ usa-se o comando make. Esse comando lê um arquivo chamado Makefile, onde estará o "roteiro" ​necessário para a compilação do programa. O objetivo básico do make é permitir que seja construído um programa em pequenas etapas. Se muitos arquivos fontes compuserem o executável final, será possível alterar um arquivo e reconstruir o executável sem ter a necessidade de compilar os demais programas. Para tal, é necessário criar um arquivo chamado Makefile. ​+===== Makefiles ===== 
 +Se o programa é constituído por vários arquivos, e normalmente usam bibliotecas e header-files externos, será necessário compilar todos eles e juntá-los (link) corretamente. Para automatizar esse procedimento,​ usa-se o comando ​**''​make''​**. Esse comando lê um arquivo chamado ​****Makefile****, onde estará o //roteiro// necessário para a compilação do programa. O objetivo básico do ''​make'' ​é permitir que seja construído um programa em pequenas etapas. Se muitos arquivos fontes compuserem o executável final, será possível alterar um arquivo e reconstruir o executável sem ter a necessidade de compilar os demais programas. Para tal, é necessário criar um arquivo chamado ​''​Makefile''​
  
  
-O make pode ser composto de várias linhas, cada um indicando como o executável deve ser construído. Normalmente,​ existe dependências entre as linhas, indicado a ordem de execução das linhas. A disposição das linhas (entradas) dentro do arquivo Makefile não importa, pois o make irá descobrir qual a ordem correta. O make exige alguns cuidados para a criação do arquivo: +''​make'' ​pode ser composto de várias linhas, cada um indicando como o executável deve ser construído. Normalmente,​ existe dependências entre as linhas, indicado a ordem de execução das linhas. A disposição das linhas (entradas) dentro do arquivo ​''​Makefile'' ​não importa, pois o ''​make'' ​irá descobrir qual a ordem correta. O ''​make'' ​exige alguns cuidados para a criação do arquivo: 
-Sempre colocar uma tabulação no começo de um comando, nunca espaços. Não deve ser utilizado uma tabulação antes de qualquer outra linha. +  ​* ​Sempre colocar uma tabulação no começo de um comando, nunca espaços. Não deve ser utilizado uma tabulação antes de qualquer outra linha. 
-O símbolo # (sustenido, tralha, cerquilha ou jogo da velha) indica uma comentário na linha. +  ​* ​O símbolo ​''​#'' ​(sustenido, tralha, cerquilha ou jogo da velha) indica uma comentário na linha. 
-Uma barra invertida no final de uma linha, indica que ela irá prosseguir na próxima linha. Ótimo para comandos longos.+  ​* ​Uma barra invertida no final de uma linha, indica que ela irá prosseguir na próxima linha. Ótimo para comandos longos.
  
 Vejamos um exemplo: Vejamos um exemplo:
Linha 82: Linha 95:
 </​code>​ </​code>​
  
-Os comandos do arquivo Makefile acima, seriam equivalentes a aos seguintes comandos (se todos fossem digitados):+Os comandos do arquivo ​''​Makefile'' ​acima, seriam equivalentes a aos seguintes comandos (se todos fossem digitados):
  
 <​code>​ <​code>​
Linha 100: Linha 113:
 </​code>​ </​code>​
  
-Para maiores informações sobre a utilização e opções dos comandos gcc e make, veja o manual on-line (help) do sistema Linux.+Para maiores informações sobre a utilização e opções dos comandos ​''​gcc'' ​''​make''​, veja o manual on-line (help) do sistema Linux.
  
gcc_linux.txt · Última modificação: d/mY H:i por laureano
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0