Facilitando a compilação com o g++

Publicado por Jean Gomes em 05/04/2010

[ Hits: 20.836 ]

 


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

Elastix - Ligações ocupadas entre os ramais (não respondem à queue)

Definindo a quantidade de conexões simultâneas no PostgreSQL

Constructor Game no Linux

Guia VOL: “como encontrar o que eu quero ???”

PHPMailer - Validação de campos, e-mail e domínio para formulário de contato e envio

  

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