Facilitando a compilação com o g++

Publicado por Jean Gomes em 05/04/2010

[ Hits: 20.583 ]

 


Facilitando a compilação com o g++



Vamos criar um shell script que facilita a compilação de um arquivo para c++.

Para compilar um arquivo para linguagem c++ usamos o comando g++.

Para verificar se o g++ está instalado no seu sistema GNU/Linux, digite:

dpkg -l g++

Se o g++ não estiver instalado, digite:

aptitude install g++

Com o g++ instalado no sistema vamos para a sintaxe do comando.

Para compilar um arquivo.

g++ <arquivo>

Esta simples linha de código compilará o arquivo, gerando um executável 'a.out', isso se não tiver nenhum erro de sintaxe na programação.

Para melhorar a saída do programa verificando os Warnings:

g++ -Wall -pedantic <arquivo>

Agora vamos atribuir um nome para o arquivo de saída, usando "-o".

g++ -Wall -pedantic <arquivo_font> -o <arquivo_executável >

Opção	   Significado

-Wall	   Liga grande quantidade de warnings do g++
-pedantic  Emite warnings sobre uso de itens proibidos pelo padrão ANSI
-o	   Especifica qual arquivo será gerado como saída (executável)

Até aqui aprendemos o crucial para compilar um arquivo para a linguagem c++.

Vamos criar um Shell para executar o comando g++ para facilitar, ao invés de ficar digitando toda vez "$g++ -Wall -pedentic <arq_font> -o <arq_executável >".

Vamos criar o shell com o nome ggc.h.

Quando criamos um arquivo *.h ou *.cpp no Linux, ele interpreta a linguagem colorindo os comandos, isto facilita a programação.

touch ggc.h

Entre no arquivo.

vim ggc.h

#!/bin/bash

echo " ==Compilador g++== "

#Vamos verificar se o arquivo de entrada é um arquivo"-f"

test -f "$1" ||
echo "== $1 Não é um arquivo para compilação ==" && #sendo um arquivo compila
g++ -Wall -pedantic $1 - $2 || #Dando erro de sintaxe não gera o executável, Warning gera executável
echo "$1 Erro de sintaxe na compilação"

exit

Criando o shell para o g++ vamos dar permissão pra executar o arquivo que criamos:

chmod +u+x ggc.h

Agora para compilar um arquivo.cpp:

./ggc.h <arquivo.cpp> <arquivo.exe>

Ex.: Vamos compilar um arquivo chamado soma.cpp e gerar o executável soma.exe:

./ggc.h soma.cpp soma.exe

Deste modo o shell script que criamos tem que estar no mesmo diretório do arquivo.cpp. Vamos fazer o nosso shell script ser um comando global dentro do nosso sistema movendo ele para o diretório /usr/local/bin/:

sudo mv ggc.h /usr/local/bin

Está é uma das formas de facilitar a entrada do comando g++, também podemos criar uma alias para "g++ -Wall -pedantic", entre outras.

Voltando ao shell script que criamos, se você quer que o seu programa sempre tenha o mesmo nome do arquivo.cpp é só mudar a seguinte linha.

g++ -Wall -pedantic $1 - $2

Para:

g++ -Wall -pedantic $1 - $1

E na hora de chamar o nosso compilador só entramos com o nome do arquivo.cpp:

ggc <arquivo.cpp>

Lembrando que as extensões *.h e *.cpp não fazem nenhuma diferença no Linux. Só foram citadas para diferenciar um arquivo fonte de um executável. Espero ter ajudado.

Obrigado.

Outras dicas deste autor

Criar sua própria biblioteca C++

Leitura recomendada

Trabalhando com arquivos em Perl (parte 2)

CDR em Postgres no Elastix 2.4.0

Squid caindo devido ao erro "WARNING! Your cache is running out of filedescriptors"

Bloqueando Meebo no Linux (iptables)

Técnico de Windows e técnico de informática... Saiba a diferença

  

Comentários
[1] Comentário enviado por tinti em 07/04/2010 - 19:15h

Bacana cara, mas que tal usar um Makefile?

http://www.vivaolinux.com.br/artigo/C-Include-e-Makefile/?pagina=2
http://pt.wikibooks.org/wiki/Programar_em_C/Makefiles

Vlws.

[2] Comentário enviado por albertguedes em 27/01/2015 - 11:39h

Isso que eu ia dizer, usar o bash como script para compilação é uma PÉSSIMA prática, para isso foi feito o Makefile.
Além de que, fazer um Makefile é parte essencial do aprendizado em programação. Mas valeu a intenção.

"Aquele que se empenha a resolver as dificuldades resolve-as antes que elas surjam. Aquele que se ultrapassa a vencer os inimigos triunfa antes que as suas ameaças se concretizem." - Sun Tzu



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts