Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > Linguagens de Programação > Programação
Wiki Classificados Galeria Reviews Jogos Grupos Sociais RSS Feeds FAQ Termos de Uso Sobre
Registrar Fotos Membros Calendário Pesquisar Postados Hoje Marcar Fóruns Como Lidos

Compilando com gcc, g++ Definitivo



Quer ver menos banners de publicidade ? Entao Cadastre-se!

Tópico Trancado
 
LinkBack Ferramentas do Tópico
Antigo 18-03-2006, 22:05   #1 (permalink)
Padrão Compilando com gcc, g++ Definitivo

magnux <ativista@gmail.com> "Keep it simple, stupid"

Compilando com gcc, g++ Definitivo

Agora você poder compliar seus programas e exploit's no *nix, sem nenhum problema, usando o GCC.

O gcc/g++ o compilador C/C++ da GNU. Pode ser baixado no site da GNU individualmente, ou como parte do pacote do EGCS
(que inclue um conjunto de programas acessórios).

Proto os protdo gcc/g++:

g++ [opções] [parâmetros] arquivos.

-v
Mostra detalhes da compilação.

-wall
Mostra todos os warnings.

-onome
Define o nome do arquivo de saída (opcional).

-w
Elimina mensagens de warning.

-I/path
Acrescenta path include.

-l/path/lib
Inclue biblioteca (lib).

-ggdb
Informações extras para o gdb.

-O
Optimiza o código (-O1,-O2,-O3).

-c
Somente compila (gera o arquivo *.o).

-S
Somente compila o arquivo, não linka.

-lcomplex
Inclue biblioteca dos complexos.

-lm Inclue
biblioteca matemática.

-E
Cria somente o arquivo pré-processado.

-C
Não inclue comentários no executável.

-g
Gera informações para o debuger (código lento).


Arquivos gerados pelo gcc/g++


-qdigraph

Adiciona teclas dígrafas.

-qcompact
Deixa o código mais compacto.

-xlinguagem

Expecfica a linguagem (C, C++,assembler).

-p
Informações para o profiler proff.

-pg
Informações para o gro_.

-m686
Especifica que a máquina alvo é um 686.

-static
Especifica que a linkagem deve ser esttica.

-p
Especifica inclusão de instruções para o profiler.

-pg
Especifica inclusão de instruções para o profiler da gnu (gprof ).

A medida q os arquivos são compilados e linkados, são gerados alguns arquivos adicionais.
Lista-se a seguir os arquivos de entrada (*.h, *.cpp), e os arquivos de saída gerados pelo g++.


*.h
Arquivos header.

*.i
Arquivos de pr-processamento para programas em C.

*.ii
Arquivos de pr-processamento para programas em C++.

.c,.cc,.C,.c++,.cpp,
Arquivos de fonte.

.o
Arquivo objeto.

.s
Arquivo assembler.

.a
Arquivo de biblioteca estáticas.

.sa
Blocos de bibliotecas estáticas linkados ao programa.

.so.n
Arquivo de biblioteca dinmica.

a.out
Arquivo de saída (executável).

Exemplo de uso do gcc/g++


Exemplo basico:

1. Edita o programa greenpeace.cpp com o emacs.
Abra um terminal e execute emacs greenpeace.cpp

Código:
#include <iostream> 
using namespace std; 
main() 
{ 
cout << "Green-Peace!" << endl; 
} 
/*No emacs use ctrl+x ctrl+s para salvar o arquivo 
e ctrl+x ctrl+q para sair do emacs*/
2. Cria o arquivo de pré-processamento [opcional]
g++ -E greenpeace.cpp

3. Compila o módulo hello (gera o greenpeace.o)
g++ -c greenpeace.cpp

4. Linka o programa e gera o executavel
g++ -ohello greenpeace.o

5. Executa o programa
./greenpeace


6. Observe que os passos 2,3 e 4 podem ser executados usando:
g++ -v -ogreenpeace greenpeace.cpp

O -v Mostra um conjunto de informações a respeito dos passos da compilação.
Neste exemplo o nome do programa executável é greenpeace e foi especificado com a opção -ogreenpeace.
Se você não especificar um nome, o programa executável se chamará a.out.

Tarefa: Compare o tamanho dos códigos (dos executáveis) gerados com as opções:
g++ greenpeace.cpp #comun
g++ -g2 greenpeace.cpp #com debuger
g++ -o3 greenpeace.cpp #com otimização

Situções:

Antes de compilar no windows e no linux
windows nome.h/nome.cpp
linux nome.h/nome

Depois de compilar
windows nome.obj
linux nome.o

Depois de linkar
windows nome.exe
linux nome



Ferramentas para programar no linux

_ kylix http://www.borland.com/kylix/index.html. Ambiente com uso da biblioteca VCL (Visual Class Library).

_ Code Warrior Metroworks, ambiente com uso da biblioteca code warrior (?).

_ kdevelop http://www.kdevelop.org/ ambiente completo com uso da biblioteca qt ou kde.

_ qt http://www.trolltech.com, para o desenho de interfaces grficas usando a biblioteca QT.

_ glade http://glade.gnome.org/ q utiliza o tolkit do gtk++ http://www.gtk.org/.

_ dev C++ http://www.bloodshed.net/dev/, ambiente visual pequeno e simples de usar, usa as ferramentas da GNU..

_ Source navigator http://sources.redhat.com/sourcenav/ .

_ Sistema GNU (g++, make, automake, autoconf, libtool). Podem-se desenvolver os programas
Com editores de texto simples e usar o make para compilação automatizada. Tem o cvs para controle de versões.
Observe que usar o sistema GNU garante uma maior portabilidade e uniformidade no desenvolvimento de seus programas, pois está presente em praticamente todas as plataformas.


Quem programa no linux deve saber onde fica o diretório com os programas do sistema e onde ficam localizadas as bibliotecas:

/usr/bin
programas do sistema

/usr/local/bin
programas locais

/usr/include
arquivos include

/urs/lib
bibliotecas

/usr/openwin/lib
bibliotecas do X windows



Programas ulteis para desenvolvimento de software no linux.

Programas utilitrios
Ambientes de desenvolvimento
Ambiente para desenvolvimento no KDE = kdevelop
Ambiente de desenvolvimento semelhante ao Borland = xwpe
Ambiente para desenvolvimento no GNOME = glade

Editor de texto
Editor de texto simples = emacs


Compiladores
Compilador C da GNU = gcc
Compilador C++ da GNU g++
Compilação automatizada = make
Linkagem = ld

Depuração
Depurador C da GNU = gdb
Depurador do KDE (kdevelop) = kdbg
Programas GNU = Compliant
Geração dos scripts de configuração = autoconf
Geração dos scripts Makefile = automake
Pacote de geração de bibliotecas = libtool

Programas Diversos
Traça informações, chamadas a bibliotecas = ltrace
Controle de versões CVS

Formatação do código
Diferenças entre arquivos = diff
Formata o código = bison
Organiza o código (layout) = indent
Analisador léxico = fex,fex++

Documentação
Gera documentação a partir de tags no código. = doxygen
Geração de diagramas de classes = graphviz
Manipulação binária = bfd
Binary _le descriptor = binutil
Pro_le (analizador de desempenho) = gprof
Montagem de bibliotecas = ar
Índices das bibliotecas = ranlib
Informações sobre objetos = objdump


Veja abaixo algumas extenções que você pode encontrar no GCC :

gcc-g77 ( Suporte para Fortran )

gcc-gnat (Suporte para Ada )

gcc-java (Suporte para Java )

gcc-objc (Suporte para Objective-C )




 
Avatar de magnux
 
Registrado em: Mar 2006
Posts: 2
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0 magnux
magnux está offline  
Antigo 20-03-2006, 10:25   #2 (permalink)
Padrão Re: Compilando com gcc, g++ Definitivo

Cara. Posta isso como tutorial. De preferencia no wiki também. O texto está massa.
__________________
www.whitetiger.com.br
 
Avatar de WhiteTiger
 
Registrado em: Mar 2005
Localização: Portugal
Idade: 24
Posts: 797
Agradeceu: 0
Agradecido 9 vez(es) em 9 Posts
Reputação: 0 WhiteTiger
Enviar mensagem via Windows Live Messenger para WhiteTiger Enviar mensagem via Skype para WhiteTiger
WhiteTiger está offline  
Tópico Trancado

Ferramentas do Tópico

Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não
Trackbacks are Sim
Pingbacks are Sim
Refbacks are Sim

Ir para...

Tópicos Similares
Tópico Tópico Iniciado Por Fórum Respostas Última Mensagem
Guia basico e definitivo: Autenticacao Squid NCSA. iknow Proxy/NAT/Firewall 3 11-12-2006 14:21
Compilando no g++ mfernandes Programação 1 14-10-2005 12:09
Compilando serhumano Iniciantes 0 19-09-2005 20:32
Compilando o PHP 4.3.8 CFRInformatica Programação 3 09-09-2004 09:51
compilando squid Proxy/NAT/Firewall 0 16-04-2003 11:48

Horários baseados na GMT -3. Agora são 21:57.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

Divulgue o Under-Linux.Org

Under-Linux.Org

Últimas dos Fóruns

Últimas dos Blogs