Home

Programação Orientada a Objeto em C++

image

Contents

1. Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 98 is a cross compiler configure 946 checking whether we are using GNU C configure 974 checking whether gcc accepts g configure 1010 checking for c configure 1042 checking whether the C compiler c works configure 1058 c o conftest conftest C 1 gt amp 5 configure 1084 checking whether the C compiler c is a cross compiler configure 1089 checking whether we are using GNU C configure 1117 checking whether c accepts g configure 1151 checking for ranlib LIB_LMPT config status bin sh Generated automatically by configure Run this file to recreate the current configuration LIB_LMPT configure 0 arquivo configure um arquivo de shell grande 50k criado pelo autoconf e que quando executado faz centenas de testes no sistema do usu rio e cria os arquivos Makefile Guess values for system dependent variables and create Makefiles Generated automatically using autoconf version 2 13 LIB LMPT ib Impt Makefile am bin PROGRAMS lib Impt lib Impt SOURCES TTeste cpp main cpp lib Impt LDADD source Base libBase a SUBDIRS include source EXTRA DIST main cpp TTeste cpp TTeste h LIB LMPT ib Impt include Makefile am SUBDIRS Base LIB LMPT ib Impt inclu
2. e um sistema que permita aos usu rios baixar os arquivos no servidor CVS para serem compilados Veja exemplo de como baixar um programa de terceiros usando o cvs na se o Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 10 VERS O DE DEPURA O FINAL E DE DISTRIBUI O 67 Distribuir o programa e os fontes em pacotes rpm O desenvolvimento de arquivo rpm um pouco complexo e esta fora do escopo desta apostila Alguns ambientes de desenvolvimento como o kdevelop geram os arquivos rpm para voc 10 2 Senten as para distribui o de c digo fonte e Se voc esta programando no GNU Linux bem prov vel que j tenha baixado e compilado o kernel do Linux O mesmo disponibilizado no site http kernel org V ao site do kernel do Linux e compare o tamanho das atualiza es do kernel isto compare os arquivos kernel versao tar bz2 e patch versao bz2 Veja o resultado a em baixo de 23576Kb para 807Kb patch 2 4 18 bz2 807 KB 25 02 2002 19 44 00 linux 2 4 18 tar bz2 23596 KB 25 02 2002 19 40 00 File e Useo patch a atualiza o dos programas fica muito mais r pida pois os arquivos de atualiza es s o pequenos e podem ser baixados com extrema rapidez na internet e J que estamos falando do uso de patch para baixar arquivos menores pela internet pense em usar mais a internet como um instrumento de aprendizado de trabalho e de troca de dados Evite span
3. Apaga a letra a direita Apaga a letra a esquerda Apaga a palavra a direita Apaga a palavra a esquerda Apaga toda a linha a direita Apaga toda a linha a direita inclusive retorno de carro www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 2 EDI O DE TEXTO EMACS E VI 27 2 2 4 Arquivos Ax Af Ax d Ax As Ax Aw Ax Ad Ax b Abre um arquivo do disco ou cria novo Abre o diret rio Salva o arquivo em disco Salvar como Abre um diret rio Uma janela Duas Janelas Inserir o arquivo Lista os buffers 2 2 5 Pesquisa e substitui o Alt Alt x repl s Pesquisa s palavra r palavra Entre com a string A Entre com a string B Pede confirma o Entre com a string A Entre com a string B N o pede confirma o Procura pela palavra para baixo Procura pela palavra para cima 2 2 6 M ltiplas janelas Au 0A Amv Axo 1x2 Ax Posiciona no inicio da janela Scroll para final da janela Alterna janela ativa Duas janelas Uma janela ativa 2 2 7 Encerrando se o do Emacs Ax Ac Az Sai do Emacs Suspende o Emacs Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 2 EDI O DE TEXTO EMACS E VI 28 Senten as para o emacs e AUTO SAVE O emacs salva automaticamente os arquivos em disco com o nome nomeArquivo Quando voc salva o arquivo em disco deixa de existir o autoSave e A Linha
4. O programa path usado para unificar arquivos Veja na se o 2 o uso dos programas diff e patch para distribui o de upgrades de programas Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 3 OS PROGRAMAS DIFE PATCH INDENT 33 Prot tipo e par metros do patch patch u v arquivoAntigo arquivoDiferencas u O arquivo das diferen as foi gerado usando a vers o unificada op o u no diff v Mostra vers o do programa patch Dados os arquivos arql cpp arq2 cpp e o arquivo das diferen as gerado pelo diff voc pode atualizar o arquivo arql cpp de forma que o mesmo tenha o mesmo conte do do arq2 cpp Veja o exemplo Exemplo diff arql cpp arq2 cpp gt diferencas cpp Vai modificar o arql e o mesmo ficar igual a arq2 patch argl cpp diferencas cpp Ou seja o programa patch junta os arquivos arql cpp e diferencas cpp criando o arquivo arq2 cpp 3 3 O programa indent O programa indent usado para deixar o c digo organizado atrav s do uso de padr es de in denta o Existe um padr o default pr estabelecido mas voc pode definir os padr es a serem utilizados Veja a seguir o prot tipo de uso do indent Lista se de forma abreviada algumas das op es que podem ser passadas para o indent Estes par metros podem ser armazenados no arquivo indent pro Prot tipo indent file o outfile op es indent filel file2 fileN op
5. home REPOSITORY CVSROOT modules v lt modules new revision 1 2 previous revision 1 1 done cvs commit Rebuilding administrative file database Agora voc pode executar o comando checkout de forma abreviada usando o nome do m dulo mkdir tmp workdir2 cd tmp workdir2 cvs checkout lib gnu Para que o comando ficasse ainda mais curto poderia se ter utilizado a forma abreviada de checkout cvs co lib gnu 13 3 5 Para adicionar remover arquivos e diret rios O comando add agenda a adi o de arquivos e diret rios que s ser o copiados para o reposit rio com o comando commit Da mesma forma o comando remove agenda a remo o de arquivos e diret rios que s ser o removidos do reposit rio com o comando commit Veja a seguir o prot tipo destes comandos Observe que para os comandos funcionarem voc deve estar no diret rio de trabalho tmp workdir Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 108 Para adicionar um arquivo Vamos criar um arquivo leiame txt o mesmo cont m alguma informa o sobre o projeto Vamos cri lo com o editor emacs use o que lhe convier emacs leiame txt inclui observa es no arquivo leiame txt Agora vamos agendar a adi o do arquivo com o comando add A sa da do comando apresentada em it lico cvs add m adicionado arquivo leiame txt leiame txt
6. makefile libtool v makefile ok v uso makefile v Dica Depois de importar seus projetos para dentro do reposit rio fa a um backup dos projetos tar cvzf NomeProjeto tar gz NomeProjeto e remova os arquivos do projeto rm fr NomeProjeto Desta forma voc elimina a possibilidade de trabalhar acidentalmente nos arquivos de seu pro jeto em vez de trabalhar com os arquivos do reposit rio 13 3 3 Para baixar o projeto O nosso reposit rio j foi criado j definimos um grupo de trabalho e j copiamos para dentro do reposit rio um projeto Agora vamos iniciar o uso efetivo do cvs Para copiar os arquivos de dentro do reposit rio para o diret rio onde voc deseja trabalhar usa se o comando checkout Veja na listagem a seguir o prot tipo e os par metros do comando checkout Listing 13 6 Sa da do comando cvs H checkout andre mercurio cvs cvs H checkout Usage cvs checkout ANPRcflnps r rev D date d dir j revi j rev2 k kopt modules Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 106 A Reset any sticky tags date kopts N Don t shorten module paths if d specified P Prune empty directories R Process directories recursively C cat the module database FE Force a head revision match if tag date not found 1 Local directory only not recursive n Do n
7. www posmec ufsc br e da Universidade Federal de Santa Catarina http www ufsc br Sum rio I Programa o Para GNU Linux Unix 1 Introdu o a Programa o GNU Linux Unix 1 1 Termos e conceitos utilizados pus eus SA EA Se Sow OU ew RS 1 2 O b sico do GNU Linux Unix oaa a 1 2 1 Comandos do shell teis spas 2454428 a 1 2 2 Express es regulares 2 ee 1 2 3 Programas telneteftp ss aos acei Eta Se AS ok a BES ae BS 1 3 Diret rios teis para programadores sooo e 1 4 Programas teis para programadores ooo e 2 Edi o de Texto Emacs e VI 2 1 Introdu o ao editor emacs cee e a A RR E AE ee ee 2 2 Comandos do editor emacs cs wars par proa Eus Gale PN ERA RN a BM BS dd MCs oan ae 6 oe oe BARRE ER EERE GEASS ees 2 2 2 Movimento do cursor use as setas de dire o 200 2 2 3 Cut Copy Paste Undo 2 3 5 4 grs 4 2G Bd 4 Boe Be amp Oe ew See E 224 AQUIVOS auessa ars aat Berd Sond Stes Bourn Bea Baad Brak Sg Sra 2 2 5 Pesquisa e substitui o sas vas nem Hee Ee ow oe oe 22 6 M ltplasj nel s oud aop dine BSE Se ae ea Sd Sc E SR Gg 2 2 7 Encerrando se o do Emacs 2 00000 eee 2 3 Com do UO ditor yi s s dated Gye Sse why Re Be wy Blam Gras Blame Boas 3 Os programas diff patch indent 3 1 Opr gra ma diff e aperta DRE LHE GR SEE RR eR OR SS 3 1 1 Senten as para o diff dae ae ee DAS Oe He ke oe amp ae 3 2 O pro
8. 00 eee ee ee ee 45 6 2 Saidadocomandonm help 0 0 0 eee ee ee ee 46 6 3 Sa da do comando ldd usr bin lyx 2 ee 47 6 4 Arquivo makefile com bibliotecas est ticas e dindmicas ad 6 5 Arquivo mostrando o uso do makefile 2 2 0 2 2 0 2002 2000 53 7 1 Arquivo libtool help 4 naaa aaa a 55 11 1 Exemplo de arquivo de configura o do doxygen com coment rios 71 11 2 Sa da do comando doxygen help oaaae 72 11 3 Exemplo de c digo documentado no formato JAVA DOC para uso com o programa MON lt 2 eg hae dee eee ee PEGADA AE E ENE DE ADSL 12 13 1 Sa da do comando cvs help options 0 0000 eee ee eee 101 13 2 Sa da do comando cvs help commands 2 00 00004 101 13 3 Sa da do comando cvs help synonyms 0 0000 eee 102 13 4 Sa da do comando cvs import 0 0 0 eee ee ee 104 13 5 Como fica o repositorio ap s a importa o ccccccclcccc 105 13 6 Sa da do comando cvs H checkout c cccccccccl e 105 13 7 Sa da do comando cvs Hcommit 0000022 eee 107 13 8 Sa da do comando cvs commit ap s adi o de um m dulo 107 13 9 Sa da do comando cvs H update 0 0002 eee ee eee 110 13 10Sa da do comando cvs tag nome 0 000 eee ee ee ee ee 112 13 11Saida do comando cvscommit r2 2 2 ee 114 13 12Sa da do comando Cys dill 44 ae dada Sms ae dom eo ee amp we ees 115
9. 1024 GENERATE LEGEND YES DOT CLEANUP YES deleta arquivos tempor rios de Po Sel a mig a a pas o E Sp Ep ah a o SE S Ga i ah St E ae a eS Configuration addtions related to the search engine de me E aS ae E sas 8 ee a e q E a ee Se a VT E ii O ep ee de ee TS Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 72 SEARCHENGINE CGI_NAME CGI_URL DOC_URL DOC_ABSPATH BIN_ABSPATH EXT DOC PATHS z Observe na listagem acima a op o de uso do programa auxiliar dot tool O mesmo utilizado para gerar diagramas de relacionamento entre as classes Para obter informa es gerais sobre o doxygem execute doxygem help A sa da do comando doxy gem help dada por Listing 11 2 Sa da do comando doxygen help Doxygen version 1 2 8 1 Copyright Dimitri van Heesch 1997 2001 You can use doxygen in a number of ways 1 Use doxygen to generate a template configuration file doxygen s g configName If is used for configName doxygen will write to standard output 2 Use doxygen to update an old configuration file doxygen s u configName 3 Use doxygen to generate documentation using an existing configuration file doxygen configName If is used for configName doxygen will read from standard input 4 Use doxygen to generate a template style sheet file for RTF HTML or La
10. GNU Linux sistema operacional GNU 100 livre que utiliza o Linux como kernel GNU Linux a variante mais conhecida do sistema GNU GPL licen a de software livre mais utilizada no mundo A caracter stica que qualquer trabalho de rivado de um software livre sob GPL obrigatoriamente deve permanecer livre A GPL pode ser obtida em http www gnu org licenses gpl html uma c pia apresentada no ap ndice 29 C digo Aberto express o utilizada para indicar que voc pode ver o c digo fonte do programa Entretanto nada pode ser dito a respeito das condi es sob as quais o c digo fonte se encontra Existem programas de c digo aberto que n o s o livres pois o usu rio dependendo da licen a pode ser proibido de alterar e publicar o c digo Open Source Initiative grupo desmembrado do movimento pelo software livre em 1998 e que rejeita a luta pela liberdade no uso do software Seu objetivo disseminar a id ia de que o c digo fonte esteja dispon vel e que as modifica es sejam permitidas gerando assim programas melhores Apesar disto este grupo costuma recomendar o uso da licen a GPL que representa melhor o esp rito do software livre Isto torna os dois grupos cooperativos do ponto de vista de cria o de softwares Software Livre Software que garante ao usu rio plenas liberdades de uso modifica o c pia e publica o de vers es modificadas A defini o de software livre pode ser encontrada em http www
11. LIB_LMPT aclocal m4 Arquivo grande contendo um conjunto de macros LIB_LMPT config cache This file is a shell script that caches the results of configure tests run on this system so they can be shared between configure scripts and configure runs It is not useful on other systems If it contains results you don t want to keep you may remove or edit it By default configure uses config cache as the cache file creating it if it does not exist already You can give configure the cache file FILE option to use a different cache file that is what configure does when it calls configure scripts in subdirectories so they share the cache Giving cache file dev null disables caching for debugging configure config status only pays attention to the cache file if you give it the recheck option to rerun configure SH HE E SE GE GE SE GE GE SEES Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 97 ac cv path install S ac cv path install usr bin install c ac cv prog CC S ac cv prog CC gcc ac cv prog CXX Sfac cv prog CXX c ac cv prog RANLIB Sf ac cv prog RANLIB ranlib ac cv prog cc cross Sfac cv prog cc cross no ac cv prog cc g S ac cv prog cc g ves ac cv prog cc works S ac cv prog cc works yes ac cv prog cxx cross S ac cv prog cxx cross no ac cv prog cxx g S ac cv prog cxx g ve
12. cvs commit Para renomear arquivos V para dentro do diret rio onde esta o arquivo a ser renomeado e execute os passos cd diretorio mv nome antigo nome novo cvs remove nome antigo cvs add nome novo cvs commit m Renomeado nome antigo para nome novo Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 110 13 3 6 Para atualizar os arquivos locais Como o cvs permite o trabalho em grupo Um segundo usu rio pode ter copiado e alterado os arquivos do projeto no reposit rio Um segundo usu rio realizou as tarefas a seguir mkdir tmp workdir3 cd tmp workdir3 cvs checkout lib gnu cd lib gnu emacs arquivo usuario2 txt cvs add arquivo usuario2 txt cvs commit m arquivo adicionado pelo usuario2 Se outros usu rios do projeto modificaram os arquivos do reposit rio ent o os arquivos com os quais voc esta trabalhando podem estar desatualizados Isto se um outro usu rio modificou algum arquivo do reposit rio voc precisa atualizar os arquivos em seu diret rio de trabalho Bastaria realizar um comando cvs commit devolvendo para o reposit rio todos os arquivos que voc modificou e um comando cvs checkout que copiaria todos os arquivos do reposit rio atuali zados para seu diret rio de trabalho Mas este procedimento pode ser lento Seria mais r pido se o cvs copia se para seu diret rio de trabalho
13. do manual do libtool e Basicamente o libtool suportado pela vari vel LTLIBRARIES 12 11 Exemplo Completo Apresenta se a seguir os arquivos do programa LIB LMPT A estrutura de diret rios da forma IB ILMPT IB IMPT lib Impt Arquivos main cpp teste cpp teste h IB LMPT lib Impt source base Arquivos TOperacao cpp TMath cpp IB LMPT lib Impt include base Arquivos TOperacao h TMath h IB IMPT lib Impt docs LIB LMPT Makefile am SUBDIRS lib Impt EXTRA DIST AUTHORS COPYING ChangeLog INSTALL README TODO ORGANIZATION HOWTO AUTOMAKE_OPTIONS foreign Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 96 LIB_LMPT Madefile dist default all dist echo This file is to make it easier for you to create all you need aclocal autoheader use include deps if you want to release the stuff Don t use it for yourself automake include deps autoconf touch stamp h in LIST find po name po for i in SSLIST do file2 echo i sed e s po gmo msgfmt o SSfile2 SSi done rm f Makefile dist all aclocal autoheader automake autoconf LIB_LMPT acconfig h Define if the C compiler supports BOOL undef HAVE_BOOL undef VERSION undef PACKAGE Define if you need the GNU extensions to compile undef _GNU_SOURCE HE EH
14. o clear v clear cout lt lt v empty vazio n o vazio lt lt endl cout lt lt endl cin get return 0 Senten as para o indent e Op es padr es do padr o gnut nbad bap nbc bbo bl bli2 bls ncdb nce cp1 cs di2 ndj nfcl nfca hnl i2 ip5 lp pcs nprs psl saf sai saw nsc nsob e No c digo voc pode desabilitar ou habilitar o indent indent_on indent off e Para maiores informa es sobre o indent consulte as informa es do programa usando info indent e Para ver todas as op es do indent use man indent Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 4 Compilando com gcc g Neste cap tulo apresenta se o compilador gcc g da GNU O mesmo pode ser baixado no site da gnu individualmente ou como parte do pacote do EGCS que inclui um conjunto de programas acess rios 4 1 Prot tipo e par metros do gcc g Apresenta se aqui o prot tipo e os par metros que voc pode passar para o compilador da gnu Posteriormente atrav s dos exemplos voc compreender melhor cada par metro Prot tipo do gcc g g op es par metros arquivos V wall onome W I path l pathNib ggdb E qdigraph Mostra detalhes da compila o Mostra todos os warnings Define o nome do arquivo de sa da opcional Elimina mensagens de warning Acrescenta path include Inclue b
15. 13 13Sa da do comando cvs log leiame txt 2 ee ee 116 13 14Sa da do comando cvs status lelame txt 2 2 ee ee 117 Lista de programas Parte I Programacao Para GNU Linux Unix Cap tulo 1 Introdu o a Programa o GNU Linux Unix Esta parte da apostila cont m dicas e instru es para montagem de programas usando o formato multiplataforma da GNU Inicialmente apresenta se uma lista de comandos do shell e de programas teis no ambiente GNU Linux Descreve se o programa sua utilidade os arquivos de configura o e os par metros opcionais Quando conveniente apresenta se um exemplo A seguir descreve se o uso dos editores emacs e vi e os programas diff patch e indent Descreve se o compilador gcc g e o make para montagem de programas pequenos Como montar bibliotecas o uso do debuger e do profiler como distribuir seu c digo como documentar seus programas Depois apresenta se um roteiro para montar programas completos usando o padr o GNU e O texto aqui apresentado um texto introdut rio e Um texto intermedi rio que abrange diversos aspectos da programa o para GNU Linux fer ramentas da gnu processos sinais device drives programa o em ambientes gr ficos en contrado no livro Linux Programming Unleashed de Kurt Wall et al Em portugu s existe o Programando com Ferramentas GNU editado pela conectiva e Textos avan ados s o os manuais disponibilizados na internet isto
16. Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 120 13 8 Configura o do cvs no sistema cliente servidor Neste tipo de configura o o projeto principal fica na m quina servidora ou seja o reposit rio fica no servidor O usu rio baixa o programa para sua m quina local usando checkout faz modifica es e depois copia as modifica es para o reposit rio usando o comando commit e O servidor para uso do cvs pode ser um micro pouco potente 133MHz 32Mb com HD suficiente 4 vezes o tamanho do projeto e O acesso ao reposit rio dado por tipo de acesso path do projeto onde tipo de acesso local Voc esta na maquina servidora Se estiver trabalhando na mesma maquina do reposit rio voc faz um acesso local ao projeto e pode acessar os arquivos do projeto diretamente com cvs checkout path no repositorio servidor Voc esta na m quina cliente Se estiver remoto deve se incluir o nome do servidor servidor user hostname path to repository Ex export CVSROOT pserver usuariol nome_servidor path_repositorio cvs checkout path no repositorio e Consulte o manual do cvs para ver como configurar o servidor Exemplo Por default a conex o do cvs usa o protocolo RSH Assim se andre esta na m quina mercu rio Impt ufsc br e o servidor enterprise Impt ufsc br no arquivo rhosts deve ter a linha mercurio lmpt ufsc br andre Para testar rsh l1 bach ente
17. Com um update baixa o arquivo mesclando o com o local Com um commit atualiza no servidor File had conflicts on merge O arquivo apresenta conflitos ap s a mistura Veja na listagem a seguir a sa da do comando status Observe que o arquivo foi localmente modifi cado Listing 13 14 Sa da do comando cvs status leiame txt andre mercurio exemplo biblioteca gnu cvs status leiame txt File leiame txt Status Locally Modified Working revision 2 32 Result of merge Repository revision 2 2 home REPOSITORY exemplo biblioteca gnu leiame txt v Sticky Tag none Sticky Date none Sticky Options none Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 118 13 7 Ramos e Misturas Branching and Merging O programa cvs permite que voc crie um ramo principal para seu projeto e ramos derivados Posteriormente voc pode misturar os diferentes ramos Veja na Figura a disposi o de um novo ramo ramos ramo B ramo master Figura 13 4 Como ficam os ramos Depois de finalizado um release de um programa bastante usual a cria o de tr s ramos Digamos que voc esteja trabalhando no projeto gnome e que o release 1 0 j foi suficientemente testado podendo ser publicado Ent o voc cria o release 1 0 Release gnome 1 0 Observe que a vers o final do gnome 1 0 Agora voc pode criar um
18. bzip2 Compactador mais eficiente que o gzip bunzip2 Descompacta arquivos bz2 bzip2recover Recupera arquivos bz2 extragados t Testa V Modo verbose bz2cat Descompacata para tela stdout lha Cria e expande arquivos lharc unarj Descompacta arquivos arj split til para copiar um arquivo grande para disquetes Gera os arquivos xaa xab xac Veja man split Dividir um arquivo de 10mb em disketes de 1 44mb split b 1440kb nomeArquivoGrande doc Para recuperar use o cat cat xaa xab xac gt nomeArquivoGrande doc Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 18 tar O tar permite a voc agrupar um conjunto de arquivos em um nico facilitando o backup ou o envio pela internet Pode se ainda compactar os arquivos agrupados com o gzip C Cria novo arquivo V Modo verbose Z Descompacta arquivos tar gz f NomeArquivo W Modo iterativo T Acrescenta no modo apende X Extrai arquivos A Concatena arquivos d Compara diferen as entre arquivos delete Deleta arquivos t Lista o conte do do arquivo u Atualiza o arquivo N Ap s a data tal O Extrai arquivos para monitor W Iterativa C Muda o diret rio G Backup incremental Empacotando origem em destino tar cf origem gt destino tar Empacotando e j compactando tar cvzf destino tar gz origem Desempacotando
19. check Verificar a consist ncia da instala o clean Eliminar arquivos tempor rios obj 5 4 Exemplo de um arquivo Makefile Veja na listagem a seguir um exemplo de arquivo makefile Listing 5 1 Arquivo makefile Toda linha come ada com uma linha de coment rio Partel Defini o de vari veis ARQUIVOS e06a hello cpp OBJETOS e06a hello o DIRINCLUDE I usr include gt I usr include DIRETORIOLIB PARAMETROSLIB lm COMPILADOR g Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 5 MAKE 42 Parte II alvos all o alvo e06a hello o e e06a hello s o as depend ncias all e06a hello o e06a hello te06a hello o o alvo ARQUIVOS s o as depend ncias te COMPILADOR a instru o e06a hello o S ARQUIVOS COMPILADOR c ARQUIVOS S DIRINCLUDE DIRECL o e06a hello o e06a hello OBJETOS S COMPILADOR OBJETOS S DIRINCLUDE S DIRETORIOLIB PARAMETROSLIB 0 e06a hello clean ty SE Fo 067 Veja na listagem a seguir uma seq encia de execu o do programa make usando o arquivo make file listado em Listing 5 2 Exemplo de uso do programa make Limpa os arquivos anteriores andre mercurio Cap GNU make clean rm D 0 obj Compila o arquivo e06a hello o andre mercurio Cap GNU make e06a hello o g c e06a hello cpp I usr include gt I usr include o e06a hello o Gera o programa execu
20. evite baixar e mandar via email fotos e filmes com pouca utilidade Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 11 Documenta o de Programas Usando Ferramentas GNU Linux Apresenta se neste cap tulo o uso do formato JAVA DOC para embutir documenta o em seus programas O uso do programa doxygem para gerar a documenta o em diferentes formatos html tex rtf Cita se ainda os formatos sgml e xml para gera o de manuais profissionais 11 1 Introdu o a documenta o de programas A documenta o uma etapa fundamental para compreens o aperfei oamento e manuten o de programas Existem atualmente alguns programas e padr es para documenta o de c digos em C Vou descrever brevemente o formato JAVA DOC que aceito pelo gerador de documenta o DOX YGEN Como funciona Voc inclue em seu c digo um conjunto de tags Estes tags n o interferem na compila o de seu programa apenas incluem informa es que ser o identificadas por um programa externo o doxy gem para gerar a documenta o das classes dos atributos e dos m todos e A primeira etapa incluir a documenta o nos arquivos h e cpp veja se o e A segunda etapa consiste em executar o doxy gem que j foi instalado e configurado para gerar a documenta o veja se o 11 2 Documenta o embutida no c digo com JAVA DOC O formato JAVA DOC amplamente utilizado para
21. ls F egrep mostra diret rios tree Lista em rvore tree d Lista somente os diret rios mkdir Cria diret rio mkdir test mkdir dl d2 Cria diretorios dle d2 mkdir dl d2 Cria dl eo filho d2 mkdir p d3 d31 d32 Cria os diret rios d3 d3 d31 d3 d31 d32 mvdir Move ou renomeia um diretorio rmdir Remove o diret rio R Recursivo elimina subdiret rios usar com cuidado rmdir p d3 d31 d32 Remove todos os diret rios rm R diretorio Remove o diret rio e seus sub diret rios Arquivos cp al a2 C pia arquivos e diret rios b Cria backup de a2 i Copia iterativa T C pia recursiva P C pia arquivo e estrutura de diret rio p Preserva as permiss es e horas V Modo verbose b Cria backup cp al a2 mv Move arquivos renomeia arquivos b Cria backup V Modo verbose i Iterativa mv al a2 Renomeia arq al para a2 mv dl d2 Renomeia dir d1 para d2 mv b al a2 Renomeia com backup Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 14 rm Remove arquivos retira links d i r f Remove diret rio Remove iterativamente Remove diret rios recursivamente Desconsidera confirma o S execute o comando abaixo em um subdiret rio sem import ncia fis a 7r Remove tudo sem pedir confirma o In Linka arquivos e diret rios um arquivo com link s delet
22. para aprender em detalhes o autoconf baixe o manual do autoconf o mesmo v lido para os demais t picos apresentados nesta apostila Este resumo tem como base as p ginas man e os manuais p blicos do make 3 78 egcs 1 1 2 egcs 1 1 2 aucotonf 2 13 automake 1 4 libttol o manual do doxygen e artigos da revista do GNU Linux http www revistadolinux com br Tamb m foram consultadas as refer ncias 13 9 12 11 3 2 10 1 4 8 7 3 Estes manuais s o encontrados em ingl s no site da gnu http www gnu org 10 CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 11 1 1 Termos e conceitos utilizados Apresenta se aqui brevemente uma explica o dos termos utilizados no mundo do software livre Linux clone livre do kernel do UNIX escrito a partir do zero por Linus Torvalds com a ajuda de um grupo de programadores espalhados pela internet isto o linux somente um KERNEL Foi projetado para estar em conformidade com o POSIX e com a Single Unix Specification GNU acr nimo para GNU n o UNIX GNU o nome de um sistema operacional completo e compat vel com UNIX escrito a partir de 1983 por Richard Stallman e in meros hackers da comunidade de software livre espalhados pela internet O GNU um sistema 100 livre ou seja ele fornece as 4 liberdades b sicas do software livre A liberdade de uso modifica o c pia e publica o de vers es modificadas
23. q log client c in directory D cvsqui cvs 1 10 sre tttttCVS exited normally with code O Figura 13 6 Um frontend para 0 cvs no Windows Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 124 13 12 Um diagrama com os comandos do cvs Veja na Figura um diagrama com os comandos do cvs init inicializa cvs cvs dif arai cvs import m msg path no rep Repositorio diferencas arql local e rep nomeRelease nometag argl_diff cvs update p r numRelease arq2 gt arq2 recupera arq2 antigo cvs co nomeProjeto modulo ramo carrega todo projeto cvs add m msg arq3 cvs rm m msg arg2 cvs commit al a3 a4 E cvs tag b novoRamo cria ramo R2 Com add agenda adicao cvs co nomeRamo carrega todo ramo tal a3mod pi cvs co Proj carrega projeto cvs update d atualiza projeto CO ProjR2 tal E cvs update r ProjR2 as Legenda 7 r a4 mescla Proj e ProjR21 kerei comandos informa es cvs status observa o v gt mostra tags gt direcao arquivos r recursivo rep gt repositorio E ORE l este diretorio proj gt NomeProjeto Re pos it rio checout co get al a2 gt Arquivos commit ci com update up Figura 13 7 Diagrama com os comandos do cvs Apostila de Programa o Para Linux Unix www Impt uf
24. tar xf nome tar tar xzvf nome tgz tar xzvf nome tar gz tar xvwf nome tar Backup completo no dispositivo dev fd0 tar cvfzM dev fdO Backup tar xvfzM dev fd0 Restauracdo Diversos Metacaracter 2 Caracter coringa clear Limpa a tela date Mostra data e hora Apostila de Programa o Para Linux Unix date s 8 50 Acerta hora para 8 50 www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 19 1 2 2 Express es regulares Alguns programas do GNU Linux aceitam o uso de express es regulares principalmente os da GNU O uso de express es regulares til nas pesquisas de arquivos com find no uso do emacs entre outros Alguns caracteres s o usados para passar par metros para o interpretador das express es regulares para us los na pesquisa deve se preceder o caracter com Veja abaixo alguns exemplos de express es regulares xyz Qualquer das letras dentro do colchete Axy Exceto x e y t z De t at z tuvwxyz a zA Z Qualquer letra 0 9 Qualquer n mero A No in cio do par grafo No fim do par grafo lt No inicio da palavra lt search Palavra que inicia com search gt No fim da palavra gt search Palavra que termina com search Z Letra z O ou mais vezes Z ZZ ZZZ ZZZZ Z Letra Z 1 ou mais vezes A Letra A pode ou n o fazer parte revistas revista ou revistas Alm Letra A m vezes 0
25. vel usando biblioteca din mica libs libtool Gera biblioteca estatica usando lib tool exes libtool Gera execut vel usando biblioteca estatica e libtool init doc Inicializa o doxygem doc Gera documenta o a partir de c digo documentado clean Apaga arquivos FER Sist is Compila o padr o all obj exe obj S ARQUIVOS COMPILADOR c S ARQUIVOS S DIRINCLUDE S DIRECL exe S PROG S OBJETOS S COMPILADOR S PROG S OBJETOS S DIRINCLUDE S DIRETORIOLIB S PARAMETROSLIB o e87 Polimorfismo Criando biblioteca est tica alls libs exelibs libs S OBJETOS ar q libTPonto a OBJETOS tar cru libTPonto a OBJETOS ranlib libTPonto a publica a lib Criando executavel usando a biblioteca est tica exelibs libs COMPILADOR e87 PolimorfismoStatic cpp static L 1 LIBS 0o e87 PolimorfismoStatic Criando biblioteca din mica alld objd libd objd ARQUIVOS COMPILADOR fPIC c ARQUIVOS DIRINCLUDE DIRECL Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 53 libd S OBJETOS COMPILADOR shared Wl soname TPonto so l o libTPonto so 1 0 OBJETOS In s libTPonto so 1 0 libTPonto so 1 In s libTPonto so 1 0 libTPonto so sbin ldconfig publica a biblioteca como root f gt s Criando executavel usando a biblioteca din mica exelibd e87 PolimorfismoDinamic
26. Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 111 cvs update Updating U arquivo usuario2 txt cvs update Updating libs cvs update Updating novoDir Observe que o arquivo arquivo usuario2 txt criado pelo usu rio 2 foi adicionado a sua c pia de trabalho 13 4 Vers es tag s e releases Descrevemos no in cio deste cap tulo o que um release e um tag Apresenta se a seguir como criar e usar releases e tags 13 4 1 Entendendo as vers es Todos os arquivos do projeto que foram importados ou adicionados ao reposit rio tem uma vers o A vers o definida automaticamente pelo programa cvs e se aplica aos arquivos individualmente isto cada arquivo tem sua vers o De uma maneira geral a vers o do arquivo redefinida a cada altera o do arquivo que foi comu tada com o reposit rio Assim se o arquivo leiame txt que tem a vers o 1 1 foi alterado Quando o mesmo for devolvido ao reposit rio com o comando cvs commit o mesmo passa a ter a vers o 1 2 Veja Figura Figura 13 1 Vers es de um arquivo No exemplo a seguir vai para o diret rio de trabalho e modifica o arquivo leiame txt Depois realiza um commit Observe a altera o na vers o cd tmp workdir exemplo biblioteca gnu emacs leiame txt fa a altera es no arquivo leiame txt e depois salve o arquivo cvs commit cvs commit Examining cvs commit Examining libs cvs commit Examining novo
27. Bueno SUM RIO 4 10 Vers o de Depura o Final e de Distribui o 64 10 1 Vers o debug release e de distribui o lccccccccclc ee 64 10 1 1 Versao deb g gu sce aos sans dare pore dare Poa paa D A GS ee 64 10 1 2 Vers o final release ss ss use pa EEE EN ES ER wR ad 64 10 1 3 Distribui o dos programas e bibliotecas 64 10 2 Senten as para distribui o de c digo fonte 00 67 11 Documenta o de Programas Usando Ferramentas GNU Linux 68 11 1 Introdu o a documenta o de programas saoao e 68 11 2 Documenta o embutida no c digo com JAVA DOC 68 11 2 1 Exemplo de c digo documentado ccccccccccl 68 11 2 2 Senten as para documenta o java doc sooo 69 11 3 Tutorial de configura o e uso do DOXYGEN ccccccccc 70 11 3 1 Exemplo de programa documentado aooaa T2 11 3 2 Exemplo de diagramas gerados pelo doxygen o oo aaa 74 11 4 Documenta o profissional com sgml xml LyX saaa 75 12 Seqiiencia de Montagem de Um Programa GNU 78 12 1 Introdu o a programa o multiplataforma com GNU 78 12 2 OClOCEd ps a que eee ap dor e Rd OEE Ee E HE q ab eee ee 80 12 3 WAS saca eS a Oo oS cmd a E oS uid E oe Be UA 80 12 4 autosc n sa dos eee ee eR EER eRe EE eEe ee ad ee 80 124 1 Roteiro do autoscan 22 22 4454 424 4s4 444444 544544 54 81 12 5 aohEader tok kee ee eS EMS EME SR dE Mee Rd eee 81 12 5 1 Roteiro do
28. Distribui o Neste cap tulo apresenta se as op es para criar a vers o de depura o e a vers o final de seu programa Apresenta se ainda as formas de distribui o de programas 10 1 Vers o debug release e de distribui o A medida que o programa desenvolvido e os bugs corrigidos costuma se trabalhar com uma ver s o de debugagem passando a op o g para o compilador Depois quando deseja se distribuir um release do programa eliminam se todas as op es de debugagem e colocam se op es de otimiza o 10 1 1 Vers o debug 1 Ativar a op o de debugagem g 2 Ativar todos os warnigs Wall 10 1 2 Vers o final release 1 Desativar todas as op es de debugagem tirar g 2 Ativar as op es de otimiza o 01 02 03 3 Ativar todos os warnings Wall 10 1 3 Distribui o dos programas e bibliotecas Uma biblioteca pode ser vendida distribuindo se os arquivos de cabe alho h e os arquivos da biblioteca Jib Um programador que comprou as bibliotecas pode usar as fun es e objetos da biblioteca con sultando os manuais e os arquivos de cabe alho h Observe que como os arquivos cpp n o s o distribu dos o programador n o tem acesso a forma como as fun es foram implementadas isto n o tem como avaliar a qualidade da biblioteca Este o formato de distribui o de bibliotecas no ambiente Windows Um sistema propriet rio que es conde de quem compra o progra
29. Listing 6 5 Arquivo mostrando o uso do makefile Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 54 root mercurio biblioteca rm f CRO 0b s0 arou Fota LibTPonto root mercurio biblioteca make clean t e87 PolimorfismoDinamic e87 PolimorfismoStatic make all gt c e87 TCirculo cpp e87 TElipse cpp e87 TPonto cpp e87 Polimorfismo cpp I usr include g I usr include g e87 Polimorfismo cpp e87 TCirculo o e87 TElipse o e87 TPonto o I usr include gt I usr include lm o e87 Polimorfismo root mercurio biblioteca make alls ar q libTPonto a e87 TCirculo o e87 TElipse o e87 TPonto o ranlib libTPonto a publica a lib g e87 PolimorfismoStatic cpp static L 1TPonto o e87 PolimorfismoStatic root mercurio biblioteca make alld g fPIC c e87 TCirculo cpp e87 TElipse cpp e87 TPonto cpp e87 Polimorfismo cpp I usr include g I usr include g shared W1l soname TPonto so 1 o libTPonto so 1 0 e87 TCirculo o e87 TElipse o e87 TPonto o root mercurio biblioteca libtool g o libTPonto a Polimorfismo cpp ar cru libTPonto a ranlib libTPonto a e87 Polimorfismo cpp rm fr libs libTPonto la ar cru libs libTPonto al ranlib libs libTPonto al creating libTPonto la cd libs amp amp rm f libTPont In s libTPonto so 1 0 libTPonto so 1 ln s libTPonto so 1 0 libTPonto so
30. Pode se criar links simb licos para a lib cd usr local lib n s libTPonto so 1l o libTPonto so 1 ln s libTPonto so l o libTPonto so 7 Publica a lib inclue na tabela de bibliotecas din micas cria link e inclue em etc ld so cache sbin ldconfig Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 51 6 5 1 Usando uma biblioteca din mica O exemplo ilustrado a seguir inclue o arquivo include lt dlfcn h gt um arquivo de inclus o de bibliotecas din micas Veja no exemplo outras informa es extra do da fonte 5 include lt dlfcn h gt include lt fstream h gt main Cria ponteiro para a lib void ptrLib Cria ponteiro para fun o da lib void ptrFuncaoLib Carrega a lib dlopen const char fileName int flag ptrLib dlopen nomeLib so 1 0 RTLD LAZY Verifica se n o tem erro com a fun o dlerror const char dlerror cout lt lt dlerror Obt m endere o da fun o void dlsym void handle char simbolo ptrFuncaoLib dlsym ptrLib NomeFuncaoNaLib Usa a fun o int x ptrFuncaoLib Fecha a lib int dlclose void handle diclose ptrLib 6 5 2 Vantagens desvantagens da biblioteca din mica e Em uma biblioteca est tica o programa maior porque inclue todas as bibliotecas e Quando o programa linkado com bibliotecas din
31. a ser documentado doxygen g nomeArquivoConfiguracao Incluir a documenta o em seu c digo veja se o 22 Executar o doxygen gera por default sa da html doxygen nomeArquivoConfiguracao Para gerar sa da latex setar a vari vel GENERATE LATEX YES V para o diret rio com os arquivos do latex e execute make amp amp make ps amp amp make pdf Para gerar 2 folhas por p gina v para o diret rio com os arquivos do latex e execute make amp amp make ps 2onl amp amp make pdf 2onl Voc pode adicionar ao doxygem o programa da graphviz O mesmo usado para gerar diagramas de relacionamento das diversas classes Procure pelo programa no site http www research att com sw tools graphviz Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 71 Apresenta se nas linhas abaixo um arquivo de configura o do doxygen O arquivo inclue coment rios dentro de parenteses Listing 11 1 Exemplo de arquivo de configura o do doxygen com coment rios Doxyfile 0 1 Rena o en So BeOS Se a E E OS eee See eee DE TA eS EL OL TE ee O eo Se a General configuration options pen E ipa Ter a di a if e a ee q a a p io a pn ds rg A p o a a gra e a ees a PROJECT NAME Biblioteca de objetos LIB LMPT nome projeto PROJECT NUMBER 0 4 vers o OUTPUT DIRECTORY home andre A
32. bem lt lt std endl std cout lt lt Entre com x lt lt std endl int x cin gt gt x std cout lt lt x _ lt lt x lt lt std endl return 0 Veja a seguir o arquivo gerado pelo comando diff e06a hello cpp e06b hello cpp O s mbolo lt indica que esta linha saiu velha O s mbolo gt indica que esta linha entrou nova Listing 3 3 Arquivo diff 6c6 11 lt return O gt std cout lt lt Entre com x lt lt std endl gt int x gt cin gt gt x gt Std cout lt lt x lt lt x lt lt std send gt gt return 0 Observe a linha 6c6 11 A mesma significa que a linha 6 do arquivo e06a hello cpp e a linha 6 do arquivo e06b hello cpp s o diferentes existe um espa o extra no arquivo e06a hello cpp O c indica modificado changed Podem aparecer as letras a de adicionado c de modificado changed e d de deletado Veja a seguir o arquivo gerado pelo comando diff c e06a hello cpp e06b hello cpp Observe que os dois arquivos s o mostrados na ntegra O caracter indica as linhas que foram alteradas Listing 3 4 Arquivo diff c e06a hello cpp Tue Jun 4 13 23 49 2002 e06b hello cpp Tue Jun 4 13 24 46 2002 DS KK KKK KKK Kk 3 8 KKKK int main std cout lt lt Oi tudo bem lt lt std endl return 0 See 3 pS vs int main std cout lt lt Oi tudo bem lt lt std endl std cout lt lt Entre com x lt lt std endl Apostila de Progra
33. cat arq1 Mostra conte do do arquivo arql cat al a2 Mostra arquivos al e depois a2 cat n a2 Mostra conte do de a2 com numera o cat fl Mostra arquivo fl Cria novo arquivo cat gt texto txt digita Oo texto contrl d Finaliza arquivo cat al a2 gt a3 Concatena al e a2 e armazena em a3 cat a gt gt b Acrescenta ao final do arquivo b o arquivo a ls la cat n less arq Mostra contetido do arquivo completo str para localizar a string str no texto visualizado less arq q para sair file arq Informa o tipo de arquivo file file egrep directory tr Converte cadeias de caracteres em arquivos ls tr a z A Z de min sculas para mai sculas xargs Facilita passagem de par metros para outro comando xargs op es comando op es tProcura e deleta arquivos cpp find tmp name cpp xargs rm Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 16 Pesquisa dentro de arquivos grep O grep usado para pesquisar o que tem dentro de um arquivo n Mostra n mero da linha F O grep funciona como o fgrep C Retorna n mero de coincid ncias i Desconsidera mai sculas min sculas S Desconsidera mensagens de erro V Modo verbose An Lista tamb m as n linhas posteriores Bn Lista tamb m as n linhas anteriores r Ordem inversa f Usa arquivo auxiliar man
34. config gues Nomes can nicos e config sub Valida o de nomes e Itmain sh Implementa fun es b sicas do libtool Voc pode usar o programa libtoollize O programa libtoolize adiciona aos seus arquivos as instru es para dar suporte ao libtool adicionando os arquivos config gues config sub Itmain sh Prot tipo e par metros do libtoolize libtoolize op es automake copy Copia os arquivos e n o os links para o diret rio n N o modifica os arquivos apenas mostra as modifica es force For a a substitui o dos arquivos existentes do libtool help Ajuda Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 95 12 10 1 Exemplo de arquivo makefile am usando o libtool Exemplo bin PROGRANS prog prog debug Gera o programa prog SOURCES cpp prog LDADD libNome a tt dlopen Gera o programa com debug prog debug SOURCES cpp prog debug LDADD libNome a tt dlopen prog debug LDFLAGS static 12 10 2 Exemplo de arquivo configure in usando o libtool Exemplo acrescentar as macros tisuporte do autoconf ao libtool AC_PROG_LIBTOOL tisuporte do automake ao libtool AM_PROG_LIBTOOL tisuporte a bibliotecas din micas AC LIBTOOL DLOPEN Senten as e Leia os cap tulos Using Libttol e integrating libttol
35. conjunto de macros necess rias ao configure in AM CONFIG HEADER Reconfigurar o arquivo config h levando em conta par metros do automake AM ENABLE MULTILIB AM FUNC MKTIME AM PROG CC STDC Se o compilador n o esta em ANSIC tenta incluir par metros para deix lo no formato ANSIC AM SANITY CHECK Verifica se os arquivos o criados s o mais novos que os de c digo Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 85 A macro AM INIT AUTOMAKE Existe um conjunto de tarefas que precisam ser realizadas e que s o realizadas automatica mente pela macro AM INIT AUTOMAKE As mesmas podem ser executadas manualmente por uma sequ ncia da forma Defini o das vari veis PACKAGE e VERSION Uso da macro AC ARG PROGRAM Uso da macro AM SANITY CHECK Uso da macro AC PROG INSTALL 12 6 2 Senten as para o automake e Leia o manual do automake a parte principal com exemplos n o extensa e Qualquer vari vel ou macro definida em um arquivo makefile am sobrescreve vari veis defini das no configure in e Voc pode incluir vari veis do sistema em seu arquivo Makefile am Desta forma pode passar par metros para diversos Makefile am de forma simplificada Exemplo CXXFLAGS IS PATH LIB LMPT INCLUDES IS PATH LIB IMAGO IS PATH LIB COILIB DEFS D LINUX D INTEL D X11 D MESA 12 7 autoconf 12 7 1 Introdu o
36. cpp Vai usar a breve descri o inclu da na classe h e a documenta o detalhada inclu da na defini o da fun o cpp e Aceita os tags class struct union enum fn fun o var atributos def define file arquivo namespace um namespace brief breve coment rio e Para inserir uma lista rx Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 70 E Nome Lista tem A Sub tem A 1 Sub tem A 2 tem B Sub tem B 1 Sub tem B 2 e Para criar grupos addgroup lt NomeGrupo gt ingroup NomeGrupo defgroup NomeGrupo e Para detalhes veja a documenta o do formato JAVA_DOC 11 3 Tutorial de configura o e uso do DOXYGEN O doxygen um programa que gera a documenta o APT a partir de informa es inclu das no c digo As informa es s o inclu das no c digo utilizando se o formato JAVA_DOC veja se o Breve tutorial de uso do doxygen 1 Baixar o programa doxygen ou usar os CDs da sua distribui o GNU Linux Atualmente a maioria das distribui es GNU Linux inclue o doxygen Voc pode obter o doxygem no site http www stack nl dimitri doxygen Instalar o doxygen usando o arquivo tar gz configure amp amp make amp amp make install ou usando pacote rpm Criar um arquivo de configura o do projeto
37. cpp libd COMPILADOR e87 PolimorfismoDinamic cpp LS DIRLIBD 1S LIBD o e87 PolimorfismoDinamic E AS ee E ae Limpeza rm f 0 obj so a out e87 PolimorfismoDinamic e87 PolimorfismoStatic libTPonto USANDO LIBTOOL Para ficar port vel todas as etapas devem ser realizadas com o libtool obj libtool S ARQUIVOS libtool COMPILADOR c S ARQUIVOS SSS SSeS SS Sean Criando biblioteca estatica usando o libtool libs_libtool ARQUIVOS libtool COMPILADOR o libTPonto a ARQUIVOS a Ree dD Criando executavel usando libtool com biblioteca estatica Incompleto exes_libtool e87 PolimorfismoStatic cpp libs_libtool libtool COMPILADOR e87 PolimorfismoStatic cpp static L 1 LIBS o e87 PolimorfismoStatic libtool Criando biblioteca din mica usando o libtool libd_libtool ARQUIVOS libtool COMPILADOR o libTPonto la S ARQUIVOS E a la Na ht Criando executavel usando libtool com biblioteca din mica Incompleto exed_libtool e87 PolimorfismoStatic cpp libd libtool libtool COMPILADOR e87 PolimorfismoDinamic cppp JlibTPonto la o e87 PolimorfismoDinamic libtool ii e a A Criando documenta o com doxygem init doc doxygen g doxygem config doc S ARQUIVOS doxygen doxygem config Fa a c pias do e87 Polimorfismo cpp criando os arquivos e87 PolimorfismoStatic cpp e e87 PolimorfismoDinamic cpp e ent o execute a seqiiencia ilustrada a seguir
38. cvs add scheduling file leiame txt for addition cvs add use cvs commit to add this file permanently Depois de modificar outros arquivos podemos efetivamente adicionar o arquivo leiame txt no reposi t rio usando o comando commit Observe em it lico a sa da gerada pelo comando commit cvs commit cvs commit Examining cvs commit Examining libs cvs commit Examining novoDir RCS file home REPOSITORY exemplo biblioteca gnu leiame txt v done Checking in leiame txt home REPOSITORY exemplo biblioteca gnu leiame txt v lt leiame txt initial revision 1 1 done Alguns comandos do programa cvs podem abrir um editor de texto para que voc inclua alguma mensagem relativa a opera o que foi realizada No exemplo acima depois do cvs commit o cvs abriu o editor emacs Na sua m quina provavelmente ir abrir o vi Voc pode alterar o editor a ser aberto pelo cvs setando no arquivo bash profile a vari vel de ambiente CVSEDITOR Em minha m quina export CVSEDITOR emacs Para adicionar v rios arquivos O procedimento o mesmo primeiro agenda a adi o com add e depois adiciona efetivamente com commit cvs add m adicionados diversos arquivos cvs commit Para adicionar um diret rio A seqiiencia envolve a cria o do diret rio mkdir novoDir o agendamento da adi o cvs add novoDir e a efetiva adi o do diret rio com commit mkdir novoDir cvs add novoDir cvs commit m adicionado novo d
39. de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 102 editors See who is editing a watched file export Export sources from CVS similar to checkout history Show repository access history import Import sources into CVS using vendor branches init Create a CVS repository if it doesn t exist kserver Kerberos server mode log Print out history information for files login Prompt for password for authenticating server Logout Removes entry in cvspass for remote repository pserver Password server mode rannotate Show last revision where each line of module was modified rdiff Create patch format diffs between releases release Indicate that a Module is no longer in use remove Remove an entry from the repository rlog Print out history information for a module rtag Add a symbolic tag to a module server Server mode status Display status information on checked out files tag Add a symbolic tag to checked out version of files unedit Undo an edit command update Bring work tree in sync with repository version Show current CVS version s watch Set watches watchers See who is watching a file Para obter um help espec fico sobre um determinado comando use o comando cvs H comando Como alguns comandos podem ser repetidos com fregii ncia os mesmos possuem sin nimos A listagem a seguir apresenta estes sin nimos Listing 13
40. de arquivos AC TRY CPP includes a es True a esFalse Procura pelos arquivos include se localizou realiza a a o true caso contr rio a a o false AC EGREP HEADER padr oPesquisa headerFile a o Se a pesquisa do padr o no arquivo header foi ok realiza a a o AC EGREP CPP padr oPesquisa cppFile a o Se a pesquisa foi ok realiza a a o AC TRY COMPILF includes corpoDaFun o a o True a oFalse Cria um programa de teste com a fun o especificada para verificar se a fun o existe PS Arquivos de headers especificados pelas macros HEADERS geralmente n o s o instalados e os headers listados em SOURCES n o podem ser inclu dos nos HEADERS Rodando programas de teste AC TRY RUN programa a o True a oFalse Tenta rodar o programa se ok realiza a oTrue Pesquisando estruturas Veja manual do autoconf Pesquisando typedefs Veja manual do autoconf Pesquisando caracter sticas do compilador C AC C CONST Verifica se o compilador suporta vari veis const AC C INLINE Verifica se o compilador suporta fun es inline AC CHECK SIZEOF tipo tamanho Ex AC CHECK SIZEOF int 12 7 7 Como aproveitar os resultados das pesquisas realizadas pelo autoconf Voc coloca um conjunto de macros no arquivo configure in para testar o seu programa Os resultados das pesquisas realizadas pelo autoconf podem ser salvas Como exemplos defini es de diretrizes de pr processado
41. de informa es mostra O nome do arquivo a linha a percentagem 2 3 Comandos do editor vi Editor de texto simples e eficiente W Salva arquivo em disco q Para sair q Sai mesmo que o arquivo tenha sido alterado e Edita outro arquivo com Executa comando do shell T arg L outro arquivo na posi o do cursor Exemplo vi arquivo Edita o arquivo man vi Maiores informa es sobre o vi Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 2 EDI O DE TEXTO EMACS E VI 29 Figura 2 1 O editor de texto emacs observe o tem de menu C amacs mercurio lmptufss ar Bincluce lt isstream gt int main f n coloca unc quedra de Linaa std scut lt lt Welcone n a enite um kezp std scut lt lt to Ort nha Me malara im tah otd gt cut lt lt ben tvindo tfceda n coloca una quebra de Linha std gt cut lt lt nE ne nn n wi ii nn ind ino Wn nano antunes anl Sin return O ft Novidaces Uso de Na para emizir um beep std zcut lt lt to Uttiya Uso de t para acrecesntar un tak std scut lt lt bem tvindo Observe que usa Welcone aspas Cuplas pars ww array de carasteres e M aspas simples sara um nilu cor aulere Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 3 Os programas diff patch indent Apresenta se
42. e67 Polimorfismo cpp 267 PolimorfismoDinamic cpp 287 PolimorfismoStatic cpp e67 Programa cpp 267 TCirculo cpp e67 TCirculo h e67 TElipse cpp e67 TElipse h e67 TPonto cpp e2A7 TPontnh Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Eile View ean 2 ejo Flerane TO Sas Jreviem _ Taybate Jintao FE 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 08 12 02 23 12 05 Nas AN 24 12 05 Lv Log makefile Revision A Select by tag Author Date a E Comment Tags Author Date Comment Tags Revision B seecthytag a Cane Close Figura 13 5 Um frontend para o cvs no GNU Linux Unix o cervisia Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 123 15 x lax ala aj e alx HEE a aae saa e a mle a 2 C SGUI1104 CVSGUI1104 C VSGUI1104 CVSGUI1104 CVSGUI1104 C SGUI1104 CVSGUI1104 CVSGUI1104 CVSGUI1104 ralis E 4 f f CVSROOT alexplicvs buckosoft com Projects cvsgui password authentication TCL is available shell is enabled help select and press enter cvs z9
43. es st Envia saida para tela gnu Usa op es de formata o da GNU orig Usa op es de formata o da Berkeley V Modo verbose 160 Limita a 60 colunas bad Linha em branco ap s declara es Para desativar nbad bap Linha em branco ap s defini es de fun es nbap bbb Linha em branco antes de uma caixa de coment rio SC Coment rios no estilo de C bl5 Colchetes do bloco alinhados a 5 caracteres bn Bloco alinhado bli 5 Bloco alinhado com 5 espa os bls Alinha o par cli2 Bloco switch alinhado com espa o 2 Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 3 OS PROGRAMAS DIFE PATCH INDENT 34 npcs Sem espa o entre o nome da fun o e o CS Espa o depois do cast dil6 Indenta nome dos objetos em 16 espa os bfda Quebra argumentos da fun o em v rias linhas lp Alinha par metros de fun es com nomes grandes O programa ex vector l cpp apresentado na se o foi modificado com o programa indent com o comando Exemplo cp ex vector 1 cpp ex vector l indent cpp indent ex vector l indent cpp veja a seguir a listagem do arquivo ex vector 1 indent cpp Compare esta listagem com a listagem Observe a mudan a na declara o da fun o main na forma do do while e nas indenta es Listing 3 6 Arquivo ex vector 1 indent cpp Classes para entrada e sa da include lt iostream gt C
44. gnu org philosophy free sw html Movimento pelo Software Livre Movimento surgido na d cada de 70 em conseqii ncia da cres cente press o recebida para a ado o de softwares propriet rios e assinaturas de tratados de n o divulga o O movimento ganhou forca a partir da d cada de 80 com o projeto GNU que libertava os usu rios dos sistemas UNIX propriet rios O GNU consolidou se na d cada de 90 como um sistema completo e funcional atingindo uma qualidade t cnica compar vel aos melhores sistemas operacionais propriet rios Em resumo Linux um kernel e n o um sistema operacional Apesar de Linux ser comumente usado em refer ncia ao sistema operacional GNU Linux voc deve evitar este uso equivocado por 2 Contribui o do revisor Ricardo Grutzmacher grutz Oterra com br Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 12 quest es de clareza t cnica e por quest es de cr dito ao projeto GNU que forneceu o seu sistema operacional para ser adaptado ao kernel Linux Sempre que voc quiser falar do sistema operacional use o termo GNU Linux Desta forma voc estar levando adiante os ideais do software livre que est o representados no projeto GNU 1 2 O b sico do GNU Linux Unix Apresenta se a seguir um guia com alguns comandos de shell do GNU Linux Unix MacOS X e que s o teis para programadores 1 2 1 Coma
45. grep Mostra detalhes do grep greep v buble sort c ls 1 egrep Julia Lista diret rio e pesquisa pelo arquivo julia ls la egrep Sofia grep 0 9 guide txt grep b guide txt grep argAux guide txt Pesquisa em guide txt usando arqgAux sort Ordena arquivos C Verifica arquivo 0 Especifica nome arquivo sa da d Ordem dicion rio f Despreza diferen a mai scula min scula t Atualiza data e hora S Modo silencioso sort r arquivo ls sort r Ordem invertida Ordena a listagem de diret rio a partir da 4 coluna considerando n mero ls l egrep rwx sort 4n Compacta o e backup zip Compat vel com pkzip pkunzip do DOS unzip Unzipa arquivos zip Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 17 zip r nome zip nomeDiret rio unzip nome zip gzip gunzip Compacta Descompacta arquivos com a extens o gz Z gz z Z C Mostra arquivo na tela d Descomprime o arquivo S Extens o do arquivo f For a compress o l Lista arquivos r Mostra diret rios recursivamente t Testa integridade do arquivo V Modo verbose 1 Mais veloz e menos compactado 9 Mais lento e mais compactado Para compactar todo um diret rio tar cvf nomeDiretorio tar nomeDiretorio gzip nomeDiretorio tar Para descompactar gunzip nomeDiretorio tar gz tar xvf nomeDiretorio tar
46. input file before every symbol B Same as format bsd C demangle auto gnu lucid arm hp edg gnu v3 java gnat compag no demangle demangler lt dso function gt D dynamic defined only e f format FORMAT g extern only h help 1 line numbers n numeric sort 0 p 2 NO S0 LU P portability r reverse sort S print armap size sort t radix RADIX target BFDNAME u undefined only V version X 32_64 nm supported targets Decode low level symbol names into user level names Do not demangle low level symbol names Set dso and demangler function Display dynamic symbols instead of normal symbols Display only defined symbols ignored Use the output format FORMAT FORMAT can be bsd sysv or posix The default is bsd Display only external symbols Display this information Use debugging information to find a filename and line number for each symbol Sort symbols numerically by address Same as A Do not sort the symbols Same as format posix Reverse the sense of the sort Include index for symbols from archive members Sort symbols by size Use RADIX for printing symbol values Specify the target object format as BFDNAME Display only undefined symbols Display this program s version number ignored elf32 1386 a out i386 linux efi app ia32 elf32 little elf32 big srec symbolsrec tekhex binary i
47. lico Veja na listagem a seguir a sa da do comando cvs tag tag executada em nosso diret rio de trabalho Listing 13 10 Sa da do comando cvs tag nome andre mercurio exemplo biblioteca gnu cvs tag tagli cvs tag warning directory CVS specified in argument cvs tag but CVS uses CVS for its own purposes skipping CVS directory T arquivo usuario2 txt T doxygem config e87 Polimorfismo e87 Polimorfismo cpp T e87 PolimorfismoDinamic cpp T e87 PolimorfismoStatic cpp e87 Programa cpp T e87 TCirculo cpp T e87 TCirculo h T e87 TElipse cpp T e87 TElipse h T e87 TPonto cpp T e87 TPonto h leiame txt Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 113 T makefile T Makefile T makefile libtool T uso makefile cvs tag Tagging novoDir Para recuperar a vers o completa do projeto usando o tag que acabamos de criar cd tmp workdir exemplo biblioteca gnu cvs checkout r tagl lib gnu Observe que para baixar o m dulo lib gnu usamos cvs checkout lib gnu e para baixar o tagl do m dulo lib gnu usamos evs checkout r tag lib gnu Ou seja apenas adicionamos ap s o comando checkout o par metro r e o nome do tag 13 4 3 Para criar release s Geralmente utilizamos um tag para criar uma vers o do projeto que esteja funcionando ou que compreenda a finaliza o de um determinado conjunto de tare
48. neste cap tulo uma breve introdu o aos programas diff patch e indent Este cap tulo pode ser lido mais tarde sem perda de sequencia 3 1 O programa diff O programa diff usado para mostrar as diferen as entre 2 arquivos isto compara dois arquivos linha a linha O programa diff muito til o mesmo usado para comparar vers es de um mesmo arquivo veja Cap tulo e para gerar arquivos de patch veja se o 22 Prot tipo e par metros do diff diff op es Argl Arg2 b Ignora espacos em branco C Gera sa da mostrando os 2 arquivos e as diferen as i Ignora diferen as entre mai sculas e min sculas q Apenas informa se os arquivos s o iguais ou diferentes r Compara diret rios recursivamente v Mostra vers o do diff xpattern Quando compara diret rios considerar arquivos com a extens o pattern u Formato unificado claro Veja a seguir o arquivo e06a hello cpp um programa simples em C Listing 3 1 Arquivo e06a hello cpp include lt iostream gt int main std cout lt lt Oi tudo bem lt lt std endl return 0 30 CAP TULO 3 OS PROGRAMAS DIFE PATCH INDENT 31 O arquivo e06a hello cpp foi modificado e salvo como e06b hello cpp Veja a seguir o arquivo e06b hello cpp observe que foram acrescentadas 4 linhas novas e o return foi alinhado Listing 3 2 Arquivo e06b hello cpp include lt iostream gt int main std cout lt lt Oi tudo
49. o listados no diret rio do libtool Veja a seguir a sa da do comando libtool help Listing 7 1 Arquivo libtool help Usage libtool OPTION MODE ARG Provide generalized library building support services config show all configuration variables debug enable verbose shell tracing n dry run display commands without modifying any files 55 CAP TULO 7 LIBTOOL 56 features display basic configuration information and exit finish same as mode finish help display this help message and exit mode MODE use operation mode MODE default inferred from MODE ARGS quiet same as silent silent don t print informational messages version print version information MODE must be one of the following clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE ARGS vary depending on the MODE Try libtool help mode MODE for a more detailed description of MODE 7 3 Criando uma biblioteca sem o libtool Reveja a seguir como criar uma biblioteca est tica sem uso do libtool Exemplo ar cru libNome a a o b o c o ranlib libNome a Para criar uma biblioteca est tica usando o arqui
50. ramo de patch o mesmo vai conter os arquivos da vers o 1 0 mas com corre es de bugs que tenham sido localizados Assim se foi identificado algum bug na vers o 1 0 voc faz as altera es no ramo gnome 1 0 patch deixando o release 1 0 inalterado Ramo gnome 1 0 patch Voc pode criar um ramo novo onde ficar o os arquivos da nova vers o do gnome Ramo gnome 1 1 Ou seja vamos ter tr s ramos O release 1 0 que n o ser mais alterado O patch que vai ter as corre es de bugs da vers o 1 0 e o 1 1 que ter os arquivos da nova gera o do gnome 13 7 1 Trabalhando com ramos Para criar um ramo a partir da c pia de trabalho local b de branch cvs tag b nome do ramo Para criar um ramo a partir de um release existente sem uma c pia de trabalho local cvs rtag b r nome do release nome do ramo path no repositorio Baixando um ramo cvs checkout r nome do ramo path no repositorio Atualiza o dos arquivos locais de um dado ramo Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 119 cvs update r nome do ramo path no repositorio ou cvs update r nome do ramo nome modulo Para saber com qual ramo voc esta trabalhando verifique o nome do ramo em Existing tags cvs status v nome arquivo 13 7 2 Mesclando 2 vers es de um arquivo Com a op o j voc pode verificar as diferen as entre 2 vers es de um a
51. rios pelos arquivos h e cpp e O nome do arquivo dentro do AC INTT usado apenas para verificar se o diret rio esta correto AC OUTPUT arquivo comandosextras comandos inicializacao e Macro que gera os arquivos de sa da do comando autoconf Gera os arquivos Makefile in e configure Observe que voc pode passar comandos extras e comandos de inicializa o Ou seja no AC OUTPUT ser o colocados os nomes dos arquivos que ser o gerados Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 88 Mas existem muitas outras macros que est o dispon veis e que voc pode usar macros para testes em geral para pesquisar se determinado programa biblioteca esta instalado a se determinadas fun es est o dispon veis entre outros Lista se a seguir as macros mais utilizadas Testes de uso geral AC CONFIG AUX DIR Configura es auxiliares AC OUTPUT COMMANDS Execu o de comandos de shell adicionais AC PROG MAKE SET Usado para definir a vari vel MAKE make AC CONFIG SUBDIRS Rodar o configure em cada um dos subdiret rios inclu dos nesta listagem AC PREFIX DEFAULT prefix Seta o prefixo default para instala o o padr o usr local AC PREFIX PROGRAM program Se o usu rio n o entrar com prefix procura por um prefixo na PATH AC PREREQ version Informa a vers o do autoconf que deve ser utilizada se a vers
52. sbin ldconfig publica a biblioteca como root make libs_libtool e87 TCirculo cpp e87 TElipse cpp e87 TPonto cpp e87 root mercurio biblioteca make libd_libtool libtool g o libTPonto la e87 TCirculo cpp e87 TElipse cpp e87 TPonto cpp libs libTPonto libs libTPonto o la amp amp ln s libTPonto la libTPonto la 6 6 Sentencas para bibliotecas e O padr o para o nome da lib libNome so versao subversao release e Voc pode acrescentar novas paths para bibliotecas din micas modificando a vari vel de ambi ente LD LIBRARY PATH Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 7 Libtool Neste cap tulo apresenta se o libtool mais um pacote da gnu utilizado para facilitar o desenvol vimento de programas em m ltiplas plataformas 7 1 Introdu o ao libtool Como ser descrito nos cap tulos seguintes o libtool mais um programa da gnu que facilita o de senvolvimento de bibliotecas multiplataforma O mesmo usado para desenvolvimento de bibliotecas no ambiente GNU Linux Vantagens do uso do libtool e Maior eleg ncia e Integrado ao autoconf e automake e Maior portabilidade e Trabalha com bibliotecas est ticas e din micas 7 2 Forma de uso do libtool Como fa o para usar o libtool De um modo geral basta digitar o comando libtool seguido do comando que voc usaria para compilar seu programa ou biblioteca Exemplos de uso do libtool est
53. todos os arquivos e subdiret rios do projeto Adicionalmente cont m arquivos criados pelo programa cvs para o gerenciamento das vers es O que uma vers o um tag um release Todo arquivo tem uma vers o que automaticamente definida pelo cvs Um tag um nome simb lico dado a uma determinada vers o do projeto pode ser usado para delimitar etapas do desen volvimento de um projeto Um release uma vers o definitiva de todos os arquivos do projeto O que o CVS n o CVS n o um sistema para constru o do soft N o substitui o gerenciamento do soft N o substitui a necessidade de comunica o entre o grupo de desenvolvimento N o serve para testar o soft 100 CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 101 O que um branch ramo Um branch ramo usado para dividir um projeto Normalmente existe o ramo mestre e os ramos secund rios 13 2 Comandos do cvs Veja a seguir o prot tipo do programa cvs Observe que voc passa um conjunto de op es para o cvs depois o nome do comando a ser executado e um conjunto de argumentos relativos ao comando Protocolo cvs cvs options command command options and arguments Os principais comandos do cvs s o o cvs checkout que baixa os arquivos do reposit rio para seu local de trabalho o cvs update que atualiza os arquivos do local de trabalho e o cvs commit que devolve ao reposit rio os arquivos que voc modificou Lista se a s
54. 3 Sa da do comando cvs help synonyms andre mercurio cvs cvs help synonyms CVS command synonyms are add ad new admin adm rcs annotate ann checkout co get commit ci com diff di dif export exp ex history hi his import im imp log lo login logon lgn rannotate rann ra rdiff patch pa release re rel remove rm delete rlog rl rtag rt rfreeze status st stat tag ta freeze update up upd version ve ver Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 103 13 3 Seqiiencia de trabalho Apresenta se nas se es que seguem os comandos e exemplos de uso do cvs Primeiro vamos criar o reposit rio a seguir vamos importar um projeto antigo que j existia para dentro do reposit rio Definido o reposit rio e importado o projeto podemos iniciar o uso efetivo do cvs Vamos criar um diret rio de trabalho e com o comando checkout copiar os arquivos do reposit rio para dentro de nosso diret rio de trabalho Vamos aprender a adicionar novos arquivos e diret rios ao projeto Finalmente vamos devolver para o reposit rio os arquivos modificados com o comando commit 13 3 1 Roteiro para criar um reposit rio 1 Setar a vari vel CVSROOT no arquivo profile ou no arquivo bash profile CVSROOT home REPOSITORY export CVSROOT Se estiver usando o cshel setenv CVSROOT home REPOSITORY 2 A seguir voc deve criar o dire
55. 9 3 N mero de 3 d gitos Z 3 5 Letra Z de 3 a 5 repeti es ZZZ ZZZZ ZZZZZ K 7 At 7 repeti es de K K 3 No m nimo 3 repeti es de K t0 O mesmo que 1 O mesmo que 0 1 O mesmo que 0 Usado para deixar a express o mais clara preced ncias Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 20 Linux 616 116 2 Acha Linux 6 Linux 6 1 Linux 6 2 O uso de cria vari veis internas que podem ser acessadas como nos exemplos abaixo quero 1 quero quero a zA Z 1 Qualquer letra espa o qualquer letra Qualquer caracter Se estiver no meio de uma senten a use w Qualquer letra W Nenhuma letra l Pipe tubo Convers o de wildcard dos para express o regular txt txt arq cpp Arq cpp arq cpp Arq cpp Cap 1 7 lyx Cap 1 7 lyx argq a b arg alb Exemplo var Avancado Define vari vel var cujo conte do o diret rio Avancado Para usar uma vari vel definida use var Is var N o aceita Is var Arquivo ou diret rio n o encontrado Is var Mostra o conte do de var do diret rio Avancado Is var N o aceita aspas simples Is echo var N o interpreta conte do de aspas duplas Is echo var Interpreta o conte do que esta dentro da crase for i in html do mv i i old done 1 2 3 Programas telnet e ftp Apresenta se a seg
56. Ajuda Help generate deps Gera depend ncias output dir dir Diret rio de output sa da srcdir dir Diret rio de fonte Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 83 Dica v verbose Modo verbose detalhado Como um arquivo makefile existem instru es como PROGRAMS lista dos programas a serem compilados EXTRA PROGRAMS programas adicionais bin PROGRAMS programas bin rios sbin PROGRAMS PROGRAMS Exemplo bin PROGRAMS nomeDoPrograma nomeDoPrograma SOURCES nome h nome cpp nomeDoPrograma LDADD LIBOBJS A vari vel LIBOBJS copiada do arquivo configure in para o arquivo makefile substi tui o simples Observe que o valor da vari vel LIBOBJS definida quando o usu rio executa o configure Roteiro do automake Apresenta se a seguir o roteiro de execu o do automake em um projeto simples l 2 3 Edite o configure in acrescentando as macros AM_INIT_AUTOMAKE nome_programa versao AC_REPLACE_FUNCS LIBOBJS listaobjetos da biblioteca AC_SUBST LIBOBJS Cria e edita o arquivo makefile am SUBDIRS lib_lmpt AUTOMAKE_OPTIONS foreign bin PROGRANS nomePrograma nomePrograma lista arquivos cpp nomePrograma LDADD LIBOBJS Executa o automake Macros do automake EXTRA DIST AUTHORS COPYING ChangeLog INSTALL REA
57. DME TODO ORGANIZATION HOWTO Uma macro realiza um conjunto de opera es Apresenta se a seguir um conjunto de macros que podem ser inclu das nos arquivos configure in e makefile am Estas macros s o usadas para interfacear o automake com o autoconf As macros do autoconf iniciam com AC e as do automake com AM AC CONFIG HEADER Apostila de Programa o Para Linux Unix O automake requer a macro AM CONFIG HEADER que similar a AC CONFIG HEADER www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 84 AC PATH XTRA Insere as defini es do AC PATH XTRA em cada arquivo Makefile am LIBOBJS Inclui os arquivos o na lista do LIBOBJS AC PROG RANLIB Necess rio se o pacote compila alguma biblioteca AC PROGCXX Necess rio se existe c digo em C AM PROG LIBTOOL Executa o pacote libtool ALL LINGUAS Checa o diret rio po e os arquivos po para especifica es relativas a linguagens AUTOMAKE OPTIONS Vari vel especial definida nos arquivos Makefile am Suporta um subconjunto de vari veis que realizam tarefas espec ficas Exemplos dist tarZ Cria uma distribui o do pacote no formato tar gz Apresenta se a seguir um conjunto de macros que podem ser inclu das no arquivo configure am e que s o fornecidas pelo automake Estas macros s o usadas para interfacear o automake com o autoconf AM INIT AUTOMAKE nomePacote vers o Inicializa o automake rodando um
58. Dir Checking in leiame txt home REPOSITORY exemplo biblioteca gnu leiame txt v lt leiame t new revision 1 2 previous revision 1 1 done 13 4 2 Para criar tag s Como dito acima cada arquivo do reposit rio vai ter uma vers o Entretanto voc pode realizar diversas modifica es no arquivo leiame txt 1 1 gt 1 2 gt 1 3 gt 1 4 gt 1 5 algumas modifica es no arquivo makefile 1 1 gt 1 2 gt 1 3 e nenhuma modifica o no arquivo NomePrograma cpp 1 1 Ou Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 112 seja cada arquivo tem um n mero de vers o diferente Seria interessante se voc pudesse se referir a todos os arquivos do projeto em uma determinada data com um mesmo nome simb lico Um tag exatamente isto um nome simb lico usado para obter os arquivos do projeto em determinada data Veja na Figura como criado um novo tag Observe que a vers o de cada arquivo n o alterada Argl Arq2 Arq3 Arg4 Figura 13 2 Criando um tag Assim em determinado dia eu quero criar um tag simb lico um nome que vou utilizar para todos os arquivos do projeto naquela data Prot tipo para criar um tag para um nico arquivo cd tmp workdir cvs tag nome release simb lico nome arquivo Prot tipo para criar um tag para todos os arquivos do projeto cd tmp workdir cvs tag nome release simb
59. Es poser Ge KEKE EG ES ELA SIG EH e dE 117 13 6 4 Verificando o status dos arquivos 2 2 ee 117 13 7 Ramos e Misturas Branching and Merging 00 118 13 7 1 Trabalhando com ramos sas ssa grata a RO STR ee Re dO gd 118 13 7 2 Mesclando 2 vers es de um arquivo 00000 ee eee 119 13 7 3 Mesclando o ramo de trabalho com o ramo principal 119 13 8 Configura o do cvs no sistema cliente servidor 0000 120 13 8 1 Vari veis de ambiente i 2 6 eee eee ee wee ee asd ds 120 13 9 Como baixar programas de terceiros usando O CVS 20 0000 080 eee 121 LS NOP IGMP s e ce a ea a a oc Sp He Gog hy Hy HS SW DE Hew RD a i Oe 121 13 11S ten as p ra O CyS ioari eh SER OE EOS E ES TE E a E s 121 13 12Um diagrama com os comandos do cvs oaoa aaa ee ee 124 Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno Lista de Figuras 2 1 O editor de texto emacs observe o tem de menuC 00 29 11 1 Ilustra o da hierarquia TMatriz da biblioteca LIB LMPT 74 11 2 Ilustra o da hierarquia da classe TRotulador3D da biblioteca LIB_LMPT 75 11 3 Ilustra o das depend ncias do arquivo TRotulador3D 76 ILA O eo us goa a mane aos DR E E O Ge STO E PQ a we oe TI 13 1 Vers es de um arquivo spears oa DESDE Rdv dd Sd AE 111 132 Crandoum tag cre ee eK gridt Se See Oe Sw pod Se eS ES 112 13 3 Criando um releas
60. LABORAT RIO DE MEIOS POROSOS E PROPRIEDADES TERMOF SICAS e N CLEO DE PESQUISA EM CONSTRU O Apostila de Programa o Orientada a Objeto em C Parte V Programa o para Linux Andr Duarte Bueno UFSC LMPT NPC http www Impt ufsc br andre email andre O Impt ufsc br Vers o 0 4 5 12 de dezembro de 2002 o ma CONSTRU O made Apostila de CVS Vers o 0 4 5 Distribu da na forma GFDL http www gnu org licenses licenses htmlfTOCFDL Copyright C 2002 Andr Duarte Bueno Esta apostila textbook livre voc pode redistribu la e ou modific la sob os termos da Licen a P blica de Documentos da GNU GFDL conforme publicada pela Free Software Foundation vers o 1 2 da Licen a como a seu crit rio qualquer vers o mais nova preservando as se es no Invariant Sections no Front Cover Texts and no Back Cover Texts Uma c pia da licen a localizada no cap tulo GNU Free Documentation License Esta apostila software livre voc pode redistribu la e ou modific la sob os termos da Licen a P blica Geral GNU conforme publicada pela Free Software Foundation tanto a vers o 2 da Licen a como a seu crit rio qualquer vers o mais nova Desenvolvida no Laborat rio de Meios Porosos e Propriedades Termof sicas http www Impt ufsc br e no N cleo de Pesquisa em Constru o http www npc ufsc br com apoio do Curso de P s Gradua o em Engenharia Mecanica http
61. NU Linux Unix tem o gdb um debug em modo texto e seus frontends o xgdb e o kdbg Antes de mais nada para poder debugar o seu c digo voc precisa acrescentar as informa es para o debug passando a op o de compila o g CPPFLAGS g Desta forma o gdb poder examinar o seu execut vel ou o arquivo core para verificar o que aconteceu 8 2 Comandos do gbd Apresenta se na Tabela uma lista com os comandos do gdb 8 3 Exemplo de uso do gdb Um pequeno exemplo de uso do gdb Exemplo gdb Run Roda o programa gdb backtrace Mostra a pilha o Ultimo comando executado gdb break 23 Acrescenta breakpoint na linha 23 gdb list Mostra o c digo fonte perto do breakpoint gdb p var Mostra o conte do da vari vel gdb c Continua execu o 60 CAP TULO 8 DEBUG DEPURADORES DEBUGGERS 61 Tabela 8 1 Comandos do gdb Comando A o gdb Executa o debuger run prog Executa o programa prog run prog arg Roda o programa com os argumentos bt Apresenta um rastreamento da pilha break func Cria breakpoint na fun o func list arq cpp Visualiza o arq cpp break 25 ou b25 Acrescenta breakpoint na linha 25 delete d Deleta os breakpoint Cc Continua step Executa um passo step 10 Executa os pr ximos 10 passos next Executa uma linha next 12 Executa as pr ximas 12 linhas pr
62. Nome a n o a a e a a 2 00002 eee 48 6 4 1 Usando uma biblioteca est tica o oa a a a a 49 6 5 Montando uma biblioteca din mica libNome so a ooo aa 50 6 5 1 Usando uma biblioteca din mica ooa a 51 6 5 2 Vantagens desvantagens da biblioteca dindmica 51 6 6 Senten as para bibliotecas 2 2 2 ee 54 7 Libtool 55 7 1 Introdu o ao libtool aaa a 53 7 2 Formadeusodolibtool 0 2 002 a JD 7 3 Criando uma biblioteca sem o libtool n n n aa a 56 7 4 Criando uma biblioteca est tica com o libtool o aoaaa a 56 7 5 Criando uma biblioteca din mica com o libtool ooa a a7 7 6 Limka doex c t v is 4 su sace s ob SK Bh SOS EE Eh eB ee a7 7 7 Instalando a biblioteca passares 5 64 eo SS A ES RH A OO a7 7 8 Modos do libtool 524 ea we ee Se ow o bee oR SESH Sw EES ES 58 7 9 Senten as pata o libtool es agents pa SEA Geese EPE ESA RE 58 8 Debug Depuradores Debuggers 60 8 1 Introdu o ao debuger 6 amp 4 eke RS ee Ele RACER DK EE HS 60 8 2 Comandos do gbd ao fag eh a Go Ge E BR de eRe SB eS 60 8 3 Exemplo de uso do gdb css aos E aoe E ak GOR BH OR GE BS BE SA ERES 60 8 4 Senten as para o gdb 2 445 4 2842858 RRR EM O OO MTO ee Ob 61 9 Profiler gprof 62 9 1 Introdu o ao gprof saga e eee bee ARS Reh eee DEES REE ES 62 9 2 Senten as para o profiler 2 2 ee 62 Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte
63. PILE Comando para compila o de c digos C normalmente setado como CXXCOMPILE CXX DEFS S INCLUDES AM_CPPFLAGS CPPFLAGS AM_CXXFLAGS CXXFLAGS CXX Nome do compilador C DEFS Op o D para compiladores C CFLAGS Op es de debugagem e otimiza o para compiladores C CPPFLAGS Diret rio com arquivos headers e outros par metros para o pr processador e compilador C CXXFLAGS Op es de debugagem e otimiza o para compiladores C CXXLINK Comando para linkagem de programas C normalmente setado como CXXLINK CXXLD AM CXXFLAGS CXXFLAGS LDFLAGS Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 93 LDFLAGS Op es para o linker LIBS Op es l e L para o linker Voc pode incluir em seus arquivos makefile am vari veis definidas no shell Ou seja antes de exe cutar o configure amp amp make amp amp make install o usu rio define algumas vari veis em seu shell ex PATH INCLUDE LIB LMPT usr include lib Impt Escrevendo suas macros para utiliza o com o autoconf Apresentou se acima um conjunto de macros dispon veis no pacote autoconf para uso no arquivo autoconf in Adicionalmente voc pode construir suas pr prias macros e incluir no arquivo confi gure in Veja o manual do autoconf Vari veis relacionadas ao autoconf Veja o manual do autoconf Vari veis d
64. TPonto a Observe que os tens 1 e 2 se referem a edi o dos arquivos do programa Em 3 o programa com pilado Pode se utilizar um arquivo makefile para automatizar esta tarefa Em 4 cria se a biblioteca gerando se o arquivo libTPonto a Em 5 a biblioteca publicada no sistema 6 4 1 Usando uma biblioteca est tica No exemplo a seguir compila o programa Prog cpp e pede para linkar em modo est tico static a biblioteca nomeLib que esta localizada em pathLib Exemplo g Prog cpp static LpathLilb InomeLib Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 50 6 5 Montando uma biblioteca din mica libNome so Roteiro para criar uma biblioteca din mica no GNU Linux 1 Cria o arquivo de cabecalho h declara o das fun es e classes emacs TPonto h class TPonto hs 2 Cria o arquivo de c digo cpp defini o das fun es emacs TPonto cpp Define funcoes da classe 3 Compila os arquivos de c digo cpp gerando os arquivos o A op o fPIC gera o c digo com posicionamento independente podendo o mesmo ser carre gado em qualquer endere o g fPIC c TPonto cpp o TPonto o 4 Cria a biblioteca din mica A op o WL passa informa es para o linker Id g shared Wl soname TPonto so 1 o libTPonto so 1 0 TPonto o 5 Copia a lib para usr local lib como root cp libTPonto so 1l o usr local lib 6
65. Teste da LIB LMPT Superclasse TTeste Gauthor Andr Duarte Bueno version vers o see veja assunto th class TTeste Atributos private protected public AA Construtor Construtor TTeste Destrutor Destrutor virtual TTeste Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 74 M todos private protected public Fun o principal executada por main Vai solicitar ao usu rio o tipo de objeto a ser criado criar o objeto e passar o controle do programa para o objeto criado void Run Hj Friend Declara o de Fun es Friend ostream amp operator lt lt ostream amp os TTeste amp obj istream amp operator gt gt istream amp is TTeste amp obj endif 11 3 2 Exemplo de diagramas gerados pelo doxygen Voc pode instalar em seu sistema o programa da graphvis O programa da graphvis utilizado para gerar diagramas das classes ilustrando as diversas classes e seus relacionamentos Gera ainda diagramas das depend ncias dos arquivos Procure pelo programa no site http www research att com sw tools graphviz Voc pode configurar o doxygen para que use o programa da graphivs possibilitando assim a inclus o dentro da documenta o html tex de Figuras ilustrando as hierarquias das diversas classes Para ilustrar a d
66. a da em outros formatos como pdf latex rtf xml manpage Mas voc tamb m vai gerar um manual do usu rio e talvez um manual cient fico Neste caso como devo proceder para criar estes manuais No mundo GNU Linux utiliza se o DOCBOOK O docbook um document type definition DTD uma especifica o de formato de documento Voc pode implementar o docbook usando sgml standardized general markup language ou xml extensible markup language mais ou menos assim Com docbook voc define o formato do manual com sgml xml voc define a formata o de cada par grafo Se voc instalou todos os pacotes de desenvolvimento de sua distribui o provavelmente j tem disponibilizados os pacotes necess rios No meu sistema tenho instalados os pacotes andre mercurio Cap4 STL S Srpm qa egrep doch amp amp rpm qa egrep jade docbook dtd41 xml 1 0 7 docbook utils 0 6 9 2 docbook dtd30 sgml 1 0 10 docbook dtd41 sgml 1 0 10 docbook utils pdf 0 6 9 2 docbook dtd412 xml 1 0 1 k d k d k s docboo td40 sgml 1 0 11 td31 sgml 1 0 10 tyle dsssl 1 64 3 docboo docboo Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 76 Figura 11 3 Ilustra o das depend ncias do arquivo TRotulador3D Base LIB LMPT CLASS h string fstream TMatriz T BaseMa
67. a linha de coment rio O nome do arquivo dentro do AC INTT Makefile am usado apenas para verificar o diret rio Os arquivos gerados pelo autoconf est o em AC OUTPUT Observe neste exemplo que dentro da macro AC OUTPUT est o listados os diversos arquivos makefile a serem criados dnl Exemplo de arquivo configure in dnl linha de coment rio dnl Process this file with autoconf to produce a configure script AC INIT Makefile am AM CONFIG HEADER config h AM INIT AUTOMAKE lib_lmpt 0 1 dnl Checks for programs AC PROG CC AC PROG CXX AC PROG RANLIB dnl Checks for libraries dnl Checks for header files dnl Checks for typedefs structures and compiler characteristics dnl Checks for library functions AC OUTPUT Makefile lib Impt Makefile lib_lmpt include Base Makefile lib Impt include Makefile lib Impt source Base Makefile lib Impt source Makefile Dica N o deixar espa os entre o nome da macro e os paranteses 12 7 6 Macros do autoconf Lista se a seguir um conjunto de macros que podem ser utilizadas para testar a presen a de algo Estas macros fazem parte do autoconf e devem ser incluidas no arquivo configure in Observe que iniciam com AC se forem macros do autoconf e AM se forem macros do automake As principais macros a serem inclu das no arquivo configure in s o a AC INIT e AC OUTPUT AC INIT arquivo e Processa os par metros da linha de comando e e Pesquisa a estrutura de diret
68. ado se for o ltimo link ln origem link ln f chapl intro ln s origem link Cria link permanente Cria link simb lico find O find usado para pesquisar arquivos em seu HD Informa o nome do arquivo Informa tamanho ou Aceita repeti o de par metro Other find path express o name print Mostra a path type Informa o tipo atime Informa dados de data size 0 xdev Desconsidera arquivos NFS exec comando opcoes Permite executar comando Apostila de Programa o Para Linux Unix Para localizar find PATH USER Para localizar find PATH name Para localizar find PATH name Para achar arquivos core find name core arquivos do usu rio nomeUsu rio arquivos cpp Localizando tudo O ren con Cpp nover arquivos o xargs rm n a extens o 0 e a find name o o nan ne a PS exec s funciona com alguns programas melhor usar xargs find type f atime find size 1000k find size 100k find a c find file 12 100 print www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 15 head n Mostrar as primeiras n linhas de um arquivo head 5 nome txt tail n Exibe arquivo a partir de uma linha tail 20 nome txt nl Numero de linhas do arquivo we Numero de linhas de palavras e de bytes do arquivo
69. aliza a o true se false realiza a o false Pesquisando bibliotecas AC CHECK LIB biblioteca fun o a o True a oFalse Verifica se a fun o pertence a biblioteca AC HAVE LIBRARY biblioteca a o True a oFalse Verifica se a biblioteca existe AC SEARCH LIB fun o listaDeBibliotecas a o True a oFalse Pesquisa a fun o no conjunto de bibliotecas listadas AC TRY LINK AC TRY LINK FUNC AC COMPILE CHECK Pesquisando fun es AC CHECK FUNC fun o a o True a oFalse Verifica se a fun o existe e executa o comando de shell AC CHECK FUNC S fun o a o True a oFalse Verifica se a fun o existe e executa o comando de shell AC REPLACE FUNCS fun o Adiciona a fun o com o nome fun o o a vari vel LIBOBJS Pesquisando arquivos h e cpp AC CHECK HEADER header a o True a oFalse Verifica a exist ncia do header se existe executa a o True AC CONFIG HEADER header a ser criado Arquivo a ser criado com os fdefines Substitui DEFS por DHAVE CONFIG H o nome padr o para o arquivo config h Usado para criar o arquivo config h com os header comuns ao pacote Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 90 AC CHECK FILE arquivo a o True a oFalse Checa se o arquivo existe AC CHECK FILES arquivos a o True a oFalse Checa um conjunto
70. ao autoconf O autoconf uma ferramenta que objetiva automatizar a configura o de seu software para a plataforma alvo O autoconf inicializa pesquisando as macros instaladas com o pacote autoconf a seguir verifica a presen a do arquivo opcional acsite m4 no diret rio de instala o do autoconf e pelo arquivo aclocal m4 no diret rio do programa O arquivo aclocal m4 criado pelo aclocal O resultado da execu o do autoconf a cria o do arquivo configure O arquivo configure ser executado pelos usu rios para gera o dos arquivos Makefile adaptados a plataforma onde o pro grama vai ser compilado Dica de portabilidade Se for usar uma biblioteca n o port vel procure criar um m dulo separado Lembre se quando voc faz o download de um programa no formato tar gz voc primeiro descompacta o arquivo e a seguir executa configure amp amp make amp amp make install Observe que quando voc executa o configure que realiza uma s rie de verifica es em seu sistema e cria os arquivos makefiles finais Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 86 12 7 2 Prot tipo do autoconf Prot tipo e par meros do autoconf autoconf help h Mostra um help localdir dir l dir Define diret rio local macrodir dir m dir Define diret rio de macros version Mostra vers o Vamos ap
71. apenas os arquivos novos e modificados exatamente isto que o comando update faz O prot tipo do comando update listado a seguir andre mercurio Listing 13 9 Sa da do comando cvs H update cvs S cvs H update Usage cvs update APCdflRp k kopt r rev D date 5 rev I ign W spec files A Reset any sticky tags date kopts P Prune empty directories AG Overwrite locally modified files with clean repository copies d Build directories like checkout does SE Force a head revision match if tag date not found i Local directory only no recursion R Process directories recursively p Send updates to standard output avoids stickiness k kopt Use RCS kopt k option on checkout is sticky r rev Update using specified revision tag is sticky D date Set date to update from is sticky j rev erge in changes made between current revision and rev I ign ore files to ignore to reset W spec Wrappers specification line Veja no exemplo como deixar seu diret rio de trabalho com os arquivos atualizados cd tmp workdir cvs update 2Observe que o nome do diret rio obtido pelo usu rio 1 exemplo biblioteca gnu e do usu rio 2 lib gnu Isto se voc usa cvs checkout path proj no repositorio o cvs cria o diret rio path proj no repositorio Se voc usa cvs checkout nome modulo o cvs cria o diret rio nome modulo Apostila de Programa o Para Linux Unix www Impt ufsc br Eng
72. ar o arquivo config h in O arquivo config h in usado pela macro AC CONFIG HEADER file para gerar o arquivo config h O arquivo config h cont m defini es compartilhadas por todos os arquivos do pacote um header comum a todo pacote Prot tipo e par meros do autoheader autoheader help h Mo stra help localdir dir dir macrodir dir m dir version Mo stra vers o 12 5 1 Roteiro do autoheader 1 Crie um arquivo config top com as instru es iniciais do config h in 2 Criar o arquivo acconfig h Define if the C compiler supports BOOL undef HAVE BOOL tundef VERSION ftundef PACKAGE Define if you need the GNU extensions to compile undef GNU SOURCE 3 Crie um arquivo config bot com as instru es finais do config h in 4 Execute o autoheader 5 Edite o arquivo config h in gerado pelo autoheader 6 Inclua no arquivo configure in a macro AC CONFIG HEADER Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 82 12 6 automake 12 6 1 Introdu o ao automake O automake uma ferramenta para automatizar a cria o de makefiles independentes de plata forma Basicamente o programador escreve um arquivo Makefile am para cada diret rio o automake l estes arquivos e o arquivo configure in e cria os arquivos Makefile in O arquivo Makefile in um gaba
73. autoheader an fee oh ee de ee ee ee we ELE awe ee ate 81 12 0 utomak ei aop aire g e ap eh Be gp Brake GB de eRe eb ke GR 82 12 6 1 Introdu o ao automake rsrs dae Bae ee ee RR dA eee BS 82 12 6 2 Senten as para o automake parar abe deed ease ee ee 85 127 AOWOCOUE sa ads Moe am WO ce ee ee ESTO ee ee SO E E ah ery ete Goats 85 12 7 1 Introdu o ao autoconf lt 242446e4404 He bee ee REE KR ES 85 12 7 2 Prot tipo do GUtOeOnr ss gud Biese Sed Bd Sees Bak B a Bo ak Bae 86 12 7 3 Roteiro do autoconf 2 4 6 24 4 oe ae ek eee E GE ee ew ae 86 1274 Estrutura de um arquivo con figure in 2 2 54 94 58 448445 44444 86 12 7 5 Exemplo de um arquivo configure in 00000 87 12 7 6 Macros do autoconf es vropa See Be eee tee ad oo oe o Se SE 87 12 7 7 Como aproveitar os resultados das pesquisas realizadas pelo AUtOCON a amp eae ora VER e eee eee See oe eee bee dy IS eee Be 90 12 7 8 Vari veis definidas no arquivo configure in e que ser o substitu das no ar g iv Makefile pa e e noe cima rem Gee Perea bbe eee ed 92 12 8 autoreconf 263k bo a eS es hoe SMA EKRESRESWSSHA EH DEDE ES 93 12 9 Jconfig re s ps ce ee ee eke SER BREE YER BE Man he ele eh eX 94 12 10Como incluir instru es do libtool em seu pacote gnu 94 12 10 1 Exemplo de arquivo makefile am usando o libtool 95 12 10 2 Exemplo de arquivo configure in usando o libtool 95 IZ 11 Exemplo Completo a ssa
74. c br Eng Andr Duarte Bueno Cap tulo 5 Make No cap tulo anterior voc aprendeu a usar o g para compilar um programa como voc pode constatar f cil Mas se seu programa for grande voc vai ter de executar o g para cada arquivo cpp o que se transforma em trabalho tedioso Para evitar este trabalho foram desenvolvidos os arquivos de projeto Neste cap tulo vamos des crever o que como escrever e como usar arquivos de projeto e o programa make 5 1 Um arquivo de projeto Um arquivo de projeto permite a compila o de diversos arquivos com uso do programa make e Voc pode compilar seus programas diretamente digitando a instru o de compila o ou usando arquivos makefile e Um arquivo makefile um arquivo de projeto no formato ASCII que pode ser editado em editores simples como o emacs e Por padr o um arquivo de projeto makefile tem o nome makefile ou Makefile e Um arquivo de projeto pode ser simples ou complexo vai depender do tamanho do programa e dos recursos utilizados Podemos criar um arquivo Makefile com instru es de compila o Estas instru es de compila o ser o lidas e executadas pelo programa make automatizando a compila o de programas complexos Descreve se a seguir como funciona o programa make 5 2 Prot tipo e par metros do make Apresenta se a seguir o prot tipo e os par metros do programa make Por padr o o make procura no diret rio corrente o arquivo ma
75. cia para criar uma biblioteca est tica no GNU Linux 1 Cria o arquivo de cabecalho h declara o das fun es em C e das classes em C emacs Tponto h TPonto h class TPonto ctrl x ctrl s para salvar ctrl x ctrl c para sair Descrito no livro Linux Unleashed n o dispon vel em minha m quina Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 49 Tabela 6 1 Bibliotecas usuais Biblioteca Include Uso libGL so lt GL gl h gt Interface para OpenGL libjpeg so lt jpeglib h gt Interface para arquivos jpeg libpbm so lt pbm h gt Interface para bitmaps monocrom ticos libpgm so lt pgm h gt Interface para bitmaps tons de cinza libpng so lt png h gt Interface para arquivos portable bitmap format libpnm so lt pnm h gt Interface para bitmaps pbm ppm pgm libpthread so lt pthread h gt Posix Threads libvga so lt vga h gt Acesso a tela vga libz so lt zlib h gt Biblioteca para compacta o de arquivos glibe Biblioteca padr o C magick lt magick h gt Biblioteca gr fica 2 Cria o arquivo de c digo cpp defini o das fun es emacs TPonto cpp Define fun es da classe 3 Compila os arquivos de c digo cpp gerando os arquivos 0 g c TPonto cpp 4 Cria a biblioteca a lib ar q libNome a TPonto o 5 Publica a biblioteca com ranlib lib
76. configuration options related to the XML output BAL Re ps a Sa eos BP ly eM a SS qd a Et ak ag a a LB ia ag ag Ba a i tr Di GA ech St yaaa EU GENERATE_XML NO Soa st See A ES a SS A qa O ca jp a A Sh eae SS eta ee Se ee eS Se Se SS Configuration options related to the preprocessor Fa ied a cy ep ge Da ds E asi pi a a lt earn a ana eh Rad aaa ay tl png ra eth ag ape ising lp en ira EE a es ENABLE_PREPROCESSING YES MACRO_EXPANSION NO EXPAND_ONLY_PREDEF NO SEARCH_INCLUDES YES INCLUDE_PATH INCLUDE_FILE_PATTERNS PREDEFINED EXPAND_AS_DEFINED Dai EG ia A E ado a AGO a DE TR PS ED E GG E Sa A a Se TG ES ES E ES LT Ta Es ta ata a Configuration addtions related to external references Piet a a RS a ja q ita a qi a pi a ppp ad aaah A A tlh a a pel ease ah a a a TAGFILES GENERATE TAGFILE ALLEXTERNALS NO PERL PATH Ca fat dE Ta Se a Soe Ss E E A Ss E E Se SNe Sek Sh E ST Pa A SS a SO ae at Sd Configuration options related to the dot tool TET a ae a E E q a a la A ep es RS q a AD GT ela A HAVE DOT YES CLASS GRAPH NO se true desabilita gera o do grafico das heran as e gera gr fico das heran as e rela es COLLABORATION GRAPH YES grafico da hierarquia e relacionamentos INCLUDE GRAPH YES grafico dos arquivos include INCLUDED BY GRAPH YES GRAPHICAL HIERARCHY YES gera diagrama de heran as DOT PATH home SYSTEM gvl 7c bin MAX DOT GRAPH WIDTH 1024 MAX DOT GRAPH HEIGHT
77. de Base Makefile am EXTRA DIST TMath h TOperacao h LIB_LMPT lib_Impt source Makefile am SUBDIRS Base Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 99 LIB LMPT ib Impt source Base Makefile am noinst LIBRARIES libBase a libBase a SOURCES TOperacao cpp TMath cpp EXTRA DIST TMath cpp TOperacao cpp LIB LMPT ib Impt docs en Makefile am EXTRA DIST index html index 1 html index 2 html index 3 html index 4 html index 5 html index 6 html Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 13 Introdu o ao Controle de Vers es Com o CVS Neste capitulo vamos apresentar o CVS um sistema para controle das vers es de seu programa ou projeto Vamos ver o que o cvs os comandos e a sequencia de trabalho Este cap tulo foi escrito usando as refer ncias 1 8 6 13 13 1 O que o CVS CVS um sistema de controle de vers es Concurrent Versions System e Com CVS voc pode gerenciar diferentes vers es de um programa ou projeto e Pode atualizar adicionar e eliminar arquivos e diret rios ao programa Pode criar ramifica es de um projeto M ltiplos programadores podem trabalhar ao mesmo tempo no mesmo projeto e Informa es recentes sobre o CVS voc encontra no site http www cvshome org O que o reposit rio E um diret rio com
78. de do alvo 1 o make executa primeiro o alvo 1 e depois o alvo 2 Se alguma depend ncia sofre modifica es o make recompila os arquivos que foram modifica dos Alvos sem depend ncia n o s o automaticamente executados Ao editar um arquivo makefile ou Makefile no emacs o mesmo aparece com sintaxe especial Auxiliando a implementa o do arquivo makefile Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 6 Bibliotecas Apresenta se neste cap tulo um conjunto de programas auxilares que s o utilizados para mon tagens de bibliotecas no mundo GNU Linux A seguir apresenta se um exemplo de montagem de biblioteca est tica e um exemplo de montagem de biblioteca din mica 6 1 Introdu o a montagem de bibliotecas Uma biblioteca uma cole o de objetos fun es classes objetos agrupados em um nico ar quivo De um modo geral um conjunto de arquivos com a extens o o s o reunidos para gerar um arquivo libNome a para biblioteca est tica ou libNome so para biblioteca din mica O GNU Linux tem um conjunto de programas auxiliares que s o utilizados para criar manter e gerenciar bibliotecas est ticas e din micas Apresenta se a seguir uma breve descri o destes programas Para obter infor ma es detalhadas de cada programa d uma olhada no man page ou nos manuais dos programas os manuais podem ser baixados no site da gnu http www gnu org 6 1 1 ar O p
79. 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 flex flex 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 file descriptor binutil Profile analizador de desempenho gprof Montagem de bibliotecas ar Indices das bibliotecas ranlib Informa es sobre objetos objdump Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 2 Edi o de Texto Emacs e VI Apresenta se neste cap tulo uma breve descri o dos comandos dos editores emacs e vi 2 1 Introdu o ao editor emacs O emacs ilustrado na Figura um bom editor de texto O emacs oferece um conjunto de fun es espec ficas para o desenvolvimento de seus programas em C Ao salvar o arquivo com a extens o h ou cpp automaticamente o emacs mostra a sintaxe de C atrav s do syntax highlight
80. documenta o de programas em C tam b m valido para documenta o de c digos em JAVA e IDL 11 2 1 Exemplo de c digo documentado Para inserir um breve coment rio utilize tr s barras invertidas Breve coment rio apenas uma linha 68 CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 69 Para inserir um breve coment rio e um coment rio mais detalhado use Breve coment rio Coment rio mais detalhado class TNome file NomeArquivo 37 class TNome No exemplo acima observe a posi o do breve coment rio e do comentario detalhado Veja ainda a forma de defini o do nome da classe e do arquivo Para inserir um coment rio embutido use int a lt Coment rio pequeno embutido Observe que o coment rio inicia com um lt e termina com um Veja a seguir outro exemplo Um enumerador breve descri o Descri o detalhada do enumerador EA enum ENome segunda lt Comentario pequeno embutido terca lt Comentario pequeno embutido Breve descri o da fun o Descri o detalhada da fun o param int a param int b return retorna a soma int see A int Soma int a int b return atb No exemplo acima informa se o nome dos par metros e de retorno da fun o soma 11 2 2 Senten as para documenta o java doc e Se houver documenta o duplicada na classe h e nos arquivos de defini o
81. e 644224 Be RA DERAS RAD REE KR EROS RROD GOS 113 13 4 Como ficam os ramos cassada RE hae RR ARE RR RARA 118 13 5 Um frontend para o cvs no GNU Linux Unix o cervisia 24 122 13 6 Um frontend para o cvs no Windows aoaaa aa eee ee eee 129 13 7 Diagrama com os comandos do cvs o oo 124 Lista de Tabelas 1 1 Diret rios importantes para o programador 2 000 22 1 2 Programas teis para desenvolvedores de software no ambiente GNU Linux 24 6 1 Bibliotecas usuais asa ke ee eg HO SO Bel ee we ee wh RO eg a 49 8 1 Comandos do gdb cxsr ctipa da te he A SR RACE N E SEE 61 12 1 Sequ ncia executada pelo programador para montagem de programas multi plataforma usando o padr o GNU os se msm ss DICA E A GA GE A RGE GOR E GTM GR 79 12 2 Sequ ncia executada pelo usu rio 2 22 eee ee ee eee 79 Listings 3 1 Arquivo e06a hello cpp 0 00 2 eee ee ee 30 3 2 Arquivo e06b hello cpp 24 lt 4 eebee Se bee Sie eS Hoe Eis da eS 31 3 3 Arquivo diff h2 koe aS a REKEEHKESKRAERE SHE RA E ER RES 31 3 4 Argq ivodiff aos e a s eG ke RE SERENE ROEM E SEL eR eR ESS 31 3 5 Arquivo diff u 65 ok eS ae PRR RERRA DRE A DS OSH OHH ES HES 32 3 6 Arquivo ex vector l indent cpp 2 0 2 ee 34 5 1 Arquivo makefile 22 2 244664 Se KS RNA EA CE AM eee as 4 5 2 Exemplo de uso do programa make 0 0000 0 eee ee eee 42 6 1 Sa da do comando ar help 2 2 0
82. e ambiente setadas pelo autoconf Veja o manual do autoconf Vari veis geradas pelo autoconf Veja o manual do autoconf Defines usados pelo autoconf e que voc n o deve usar nos seus programas Veja o manual do autoconf Lista das macros do autoconf macros que podem ser inclu das no configure in Veja o manual do autoconf Dica Observe que no arquivo configure in existem macros do autoconf iniciadas com AC e do automake iniciados com AML mostrando uma interdepend ncia do automake e do autoconf 12 8 autoreconf Pacote utilizado para reconstruir aquilo que o autoconf construiu no caso de altera es na insta la o O autoreconf atualiza os scripts configure Prot tipo e par metros do autoreconf autoreconf Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 94 help h Mostra help force localdir dir l dir Define diret rio macrodir dir m dir verbose v Modo verbose version Mostra vers o 12 9 configure A execu o do configure gera Um conjunto de arquivos Makefile Um arquivo de header com defines Um arquivo config status Um arquivo de shell que salva os dados de configura o em um cache Um arquivo config log com as informa es da execu o do configure 12 10 Como incluir instru es do libtool em seu pacote gnu Voc precisa incluir os arquivos e
83. e87 PolimorfismoStatic cpp exemplo biblioteca gnu e87 TElipse cpp exemplo biblioteca gnu e87 TElipse h exemplo biblioteca gnu e87 PolimorfismoDinamic cpp exemplo biblioteca gnu Makefile exemplo biblioteca gnu e87 TPonto cpp exemplo biblioteca gnu e87 TPonto h exemplo biblioteca gnu e87 Polimorfismo I exemplo biblioteca gnu e87 Polimorfismo cpp exemplo biblioteca gnu makefile libtool cvs import Importing home REPOSITORY exemplo biblioteca gnu libs exemplo biblioteca gnu libs libTPonto al Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 105 L exemplo biblioteca gnu libs libTPonto la No conflicts created by this import Voc pode executar o comando Is home REPOSITORY ou tree home REPOSITORY para ver como os arquivos foram importados para dentro do reposit rio Listing 13 5 Como fica o repositorio ap s a importa o home REPOSITORY CVSROOT modules notify verifymsg v exemplo biblioteca gnu Makefile v doxygem config v doxygem configold v e87 Polimorfismo v e87 Polimorfismo cpp v e87 PolimorfismoDinamic cpp v e87 PolimorfismoStatic cpp v e87 Programa cpp v e87 TCirculo cpp v e87 TCirculo h v e87 TElipse cpp v e87 TElipse h v e87 TPonto cpp v e87 TPonto h v makefile v makefile funciona v
84. ePrograma e Para obter informa es do libtool libtool help e Para gerar apenas bibliotecas est ticas passar o flag disable shared e Durante o desenvolvimento costuma se usar biblioteca est tica com op o de debugagem Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 7 LIBTOOL 59 e Em 9 2001 o libtool ainda n o era totalmente compat vel com C e Leia o livro GNU AUTOCONF AUTOMAKE AND LIBTOOL dispon vel gratuitamente no site http sources redhat com autobook e Bibliotecas compartilhadas usam a especifica o PIC position independent code Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 8 Debug Depuradores Debuggers Apresenta se neste cap tulo informa es sobre o debuger da gnu o gdb 8 1 Introdu o ao debuger Bem voc um bom programador mas ainda existem alguns probleminhas e voc ter de rastrear o seu c digo para eliminar aqueles pequenos insetos N o adianta voc vai ter de debugar seu c digo Mas afinal de contas o que e para que serve um debuger Um debuger um programa que monitora a execu o de outros programas Com o debuger voc pode acompanhar a execu o do programa e identificar onde o mesmo esta com problemas Para tal o debuger possibilita a avalia o do conte do das vari veis e o acompanhamento passo a passo da execu o do programa O G
85. eguir a sa da do comando cvs help options que mostra a lista de op es do programa CVS Listing 13 1 Sa da do comando cvs help options andre mercurio cvs cvs help options CVS global options specified before the command name are H Displays usage information for command Q Cause CVS to be really quiet q Cause CVS to be somewhat quiet r Make checked out files read only wW Make checked out files read write default L Turn history logging off n Do not execute anything that will change the disk t Show trace of program execution try with n v CVS version and copyright T tmpdir Use tmpdir for temporary files e editor Use editor for editing log information d CVS root Overrides SCVSROOT as the root of the CVS tree f Do not use the cvsre file z Use compression level for net traffic x Encrypt all net traffic a Authenticate all net traffic s VAR VAL Set CVS user variable Lista se a seguir a sa da do comando cvs help commands o mesmo apresenta a lista de co mandos do cys Listing 13 2 Sa da do comando cvs help commands CVS commands are add Add a new file directory to the repository admin Administration front end for rcs annotate Show last revision where each line was modified checkout Checkout sources for editing commit Check files into the repository diff Show differences between revisions edit Get ready to edit a watched file Apostila
86. fas que estavam pendentes Assim com o nome do tag voc pode recuperar o projeto naquela data usando um nome abreviado Entretanto depois de finalizado o programa ou uma vers o funcional voc pode criar um release do programa A diferen a entre o tag e o release que o tag n o modifica a vers o dos arquivos do projeto O release modifica a vers o de todos os arquivos dando a todos os arquivos um mesmo n mero de vers o Veja na Figura como fica um novo release release Arqgl Arq2 Arq3 Arg4 Figura 13 3 Criando um release e Um release geralmente um pacote funcional se aplica a todos os arquivos do projeto e Depois de definido o release o mesmo n o pode ser modificado e Voc deve criar um release sempre que tiver finalizado uma parte importante de seu programa Veja a seguir o prot tipo para criar um release Prot tipo cvs commit r n mero release Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 114 cd tmp workdir cvs commit r 2 Al m de criar o release abre o vi para edi o de um arquivo de log Inclua algum coment rio a respeito do release que foi criado Veja na listagem a seguir a sa da do comando cvs commit r 2 Observe que todos os arquivos passam a ter a mesma vers o Listing 13 11 Sa da do comando cvs commit r 2 root mercurio lib gnu cvs commit r 2 cvs commi
87. forge net e ilustrado na Figura Um frontend para o Windows o wincvs ilustrado na Figura 13 11 Senten as para o cvs e Quando voc passa como par metro de algum comando do cvs um diret rio Todos os arquivos do diret rio e subdiret rios sofrem o efeito do comando e Uma path um m dulo um ramo s o equivalentes Um tag um release uma vers o s o equiva lentes Ou seja se o programa cvs espera uma path do reposit rio voc tamb m pode passar o nome de um m dulo ou de um ramo Se o cvs espera um nome de vers o voc pode passar o nome do tag ou o nome do release e Monte um grupo de trabalho Para trabalhar em grupo em um projeto voc deve se definir um grupo no GNU Linux Unix MacOS X O grupo de trabalho ter acesso aos arquivos do reposit rio num sistema cliente servidor e Pode se definir diferentes formar de acesso aos arquivos autentica es e sistemas de seguran a D uma olhado no manual de configura o do cvs e Links para cvs http www cvshome org a casa do cvs Outros frontends podem ser en contrados em http www cvsgui org download html ehttp www lincvs org Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 122 e REPOSITORY Ce a anced Repository Settings Help S tmp w5 lib gnu S novoDir arquivo usuarioZ tt doxygem config doxygem configold e87 Polimorfismo
88. grama patch dg nim a Be ge Bk ee BR e EB RD ER 3 3 O programa indent ss ss ga E Hoa ea we GATE PE EOE we SH HS E He HS 4 Compilando com gcc g 4 1 Prot tipo e par metros do gcc gt 2 ee 4 2 Arquivos gerados pelo gcc gt oaoa a 4 3 Exemplo de uso do gec g 24422224804 RE EE A A Re ED 4 4 Senten as para o compilador da gnu 00000000 SUM RIO 3 5 Make 39 5 1 Um arquivo de projeto o oo ee Re ee ok ae dee Bok GU dO E Qe Gee 39 5 2 Prot tipo e par metros do make noaoae 00 0000 eee ee 39 5 3 Formato de um arquivo Makefile oaoa aa 0 00020 000 40 5 3 1 Criando vari veis em um arquivo Makefile oaoa 40 5 3 2 Criando alvos em um arquivo Makefile 41 5 4 Exemplo de um arquivo Makefile aoao 0 2000 0000 41 5 5 Senten as para o make uaaa eae win ES ete oo OS 43 6 Bibliotecas 44 6 1 Introdu o a montagem de bibliotecas oosa 0 2000 2000 44 OLI SAR a eo Ge ae gr eg a eg de E GE De gi o q Bo DR 44 6 1 2 CD 2 e e oe a LAS Be E Gk GOR E SRS ewe PEES 45 OLS DM e eaae EA Rd ee pe e e a SE ERRO 46 GA Objd mp si s e ae Er ee ee ah Sem ots oaa a a oag 47 OLS ldd ceog aag dere der ere Dq a q ae ee CR 47 GO IOCONME S ssn aia Buk ai li a Soe Beds Eca Bras mai Bram BT Spa 48 6 2 Conven o de nomes para bibliotecas oaoa 0 00000 000 48 Go Bibliotecas s als so s a o a guini ose Bs Rr eB e ya 48 6 4 Montando uma biblioteca est tica lib
89. ha de coment rio VARIAVEL valor PROG SOURCES prog cpp VARIAVEL SUBDIRS SUBDIRS Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 92 12 7 8 Vari veis definidas no arquivo configure in e que ser o substitu das no arquivo Makefile Al m de testar o sistema como um todo o autoconf permite a inclus o de defini es no arquivo configure in que ser o substitu das nos arquivos Makefile Desta forma voc n o precisa ficar confe rindo se uma vari vel definida em cada arquivo Makefile am esta coerente Basta definir a vari vel no configure in que a mesma ser copiada para cada arquivo Makefile Apresenta se a seguir uma lista resumida das vari veis que s o definidas no configure in para uso do makefile am bindir Diret rio de instala o do execut vel configure input Para incluir um coment rio informando que o arquivo foi gerado pelo autoconf datadir Diret rio para instala o dos arquivos ready only exec prefix Prefixo dos arquivos execut veis que dependem da arquitetura includedir Diret rio para instala o dos arquivos de headers infodir Diret rio para instala o dos arquivos de documenta o libdir Diret rio para instala o dos objetos das bibliotecas libexecdir Diret rio para instala o de execut veis que outros programas executam prefix Prefixo para arquivos dependentes de plataforma CXXCOM
90. hex trad core Report bugs to bug binutils gnu org and and hjl lucon org Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 47 6 1 4 objdump Imprime informa es sobre as bibliotecas e objetos Prot tipo e par metros do objdump objdump op es par metros d debugging SYMS Tabela de s mbolos a Informa es arquivo Exemplo objdump file header file o Dica Para maiores detalhes execute objdump help 6 1 5 Idd Lista as bibliotecas din micas que determinado programa usa Prot tipo e par metros do ldd ldd d r programa help Imprime um help version Imprime a vers o do ldd d data relocs Processa uma realoca o dos dados r function relocs Processa uma realoca o dos dados e fun es v verbose Imprime informa es em geral Exemplo ldd bin netscape Veja a seguir a sa da do comando Idd usr bin lyx Lembre se que LyX o editor utilizado para montar esta apostila Observe o uso das bibliotecas libXForms Xpm X11 e libstdc Listing 6 3 Sa da do comando Idd usr bin lyx libforms so 0 88 gt usr lib libforms so 0 88 0x40032000 libxpm so 4 gt usr X11R6 lib libXpm so 4 0x400b4000 libSM so 6 gt usr X11R6 lib 1ibSM so 6 0x400c3000 libICE so 6 gt usr X11R6 lib 1ibICE so 6 0x400cc000 libxll so 6 gt usr X11R6 lib 1libX11 s0 6 0x400 e3000 libstdct libc6 2 2 s0 3 g
91. iblioteca lib Informa es extras para o gdb Otimiza o c digo 01 02 03 Somente compila gera o arquivo o Somente compila o arquivo n o linka Inclue biblioteca dos complexos Inclue biblioteca matem tica Cria somente o arquivo pr processado N o inclue coment rios no execut vel Gera informa es para o debuger c digo lento Adiciona teclas digrafas 36 CAP TULO 4 COMPILANDO COM GCC G 37 qcompact Deixa o c digo mais compacto xlinguagem Especifica a linguagem C C assembler p Informa es para o profiler proff pg Informa es para o groff m686 Especifica que a m quina alvo um 686 static Especifica que a linkagem deve ser est tica p Especifica inclus o de instru es para o profiler pg Especifica inclus o de instru es para o profiler da gnu gprof 4 2 Arquivos gerados pelo gcc g A medida que 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 il Arquivos de pr processamento para programas em C c cc C c cpp Arquivos de fonte 0 Arquivo objeto s Arquivo assembler a Arquivo de biblioteca estatica Sa Blocos de bibliotecas estaticas linkados ao programa SO n Arquivo de biblioteca dinamica a out Arquivo de sa da exec
92. ile s before member name same as i N use instance count of name f truncate inserted file names R use full path names when matching o preserve original dates u only replace files that are newer than current archive contents generic modifiers c do not warn if the library had to be created s create an archive index cf ranlib S do not build a symbol table v be verbose V display the version number X32 64 ignored Report bugs to bug binutils gnu org and and hjl lucon org 6 1 2 ranlib Gera os ndices para a biblioteca isto gera um mapa de s mbolos que ser o utilizados pelos programas para localizar corretamente as fun es a serem executadas Prot tipo e par metros do ranlib ranlib v V arquivo V Vers o do ranlib Exemplo ramlib libNome a Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 46 6 1 3 nm Mostra os s mbolos da biblioteca Prot tipo e par metros do nm nm op es arquivo C demangle Mostra nomes de forma clara para o usu rio S print armap Imprime ndice dos s mbolos Exemplo nm libNome a Use o comando nm help para obter as op es do comando nm Listing 6 2 Sa da do comando nm help Usage nm OPTION FILE List symbols from FILEs a out by default a debug syms Display debugger only symbols A print file name Print name of the
93. in aclocal m4 8 acsite m4 autoconf configure configure in Apresenta se na Tabela a sequ ncia de tarefas executadas pelo usu rio Esta sequ ncia execu tada na m quina do usu rio para gerar o programa para a sua m quina Observe que uma das grandes vantagens deste tipo de distribui o que se o usu rio tem uma m quina Pentium IV o compilador vai receber instru es para compilar o programa para um Pentium IV e n o para um antigo 386 Tabela 12 2 Sequ ncia executada pelo usu rio Entrada Programa executado Sa da Makefile in configure Makefile config cache confg log config h in config status config h Makefile in Makefile Makefile make C digo Compilado C digo compilado make install Programa Instalado Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 80 12 2 aclocal O programa aclocal gera o arquivo aclocal m4 O aclocal procura todos os arquivos m4 na path do automake autoconf depois procura o arquivo configure in copiando todas as macros encontradas para o arquivo aclocal m4 Ou seja todas as macros ser o copiadas para o arquivo aclocal m4 Prot tipo e par metros do aclocal aclocal op es help Help do aclocal acdir dir Define o diret rio output file Define nome do arquivo de sa da verbose Modo verbose detalhado version Mo
94. int var Imprime o conte do da vari vel what atributo Mostra conte do do atributo vari vel quit Abandona o debug help com Help sobre o comando 8 4 Senten as para o gdb e No GNU Linux quando um programa trava ou encerrado de forma inesperada gerado um arquivo core O arquivo core pode ser aberto pelo gdb para localizar a posi o onde o programa travou e No gnu voc pode simplificar o trabalho de debugagem incluindo a macro _ FUNCTION que imprime o nome da fun o que esta sendo executada Exemplo cout lt lt na fun o lt lt _ FUNCTION lt lt endl Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 9 Profiler gprof Neste cap tulo apresenta se brevemente o gprof o profiler da gnu 9 1 Introdu o ao gprof Um profiler um programa utilizado para avaliar o desempenho do seu programa permitindo encontrar os gargalos pontos onde o programa demora mais O profiler apresenta um gr fico com o tempo de execu o de cada fun o Primeiro compila o programa incluindo a op o pg Criando o execut vel a out que aberto pelo gprof g pg ex funcaoobjetol cpp A seguir executa o gprof gprof brief p Veja abaixo a sa da gerada pelo gprof andre mercurio Cap4 STL S gprof brief p Flat profile Each sample counts as 0 01 seconds no time accumulated cumulative self self total
95. inux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 115 nome_arquivo O nome do arquivo a ser baixado gt nome arquivo Redireciona da tela para o arquivo nome arquivo No exemplo a seguir recupera o arquivo leiame txt do tagl cvs update p r tagl leiame txt gt leiame tagl txt Checking out leiame txt RCS home REPOSITORY exemplo biblioteca gnu leiame txt v VERS 1 2 KKKKKKKKKKKKKKK 13 5 Para verificar diferen as entre arquivos O programa cvs tem suporte interno ao programa diff apresentado no Cap tulo permitindo comparar os arquivos que est o sendo usados localmente com os do reposit rio Prot tipo Compara arq local e arq do reposit rio cvs diff arq Verifica diferen as de todos os arquivos cvs diff O usu rio 2 modificou o arquivo leiame txt depois de criado o release 2 Veja na listagem a seguir a sa da do comando cvs diff executado pelo usu rio 1 Listing 13 12 Sa da do comando cvs diff andre mercurio exemplo biblioteca gnu cvs diff cvs diff Diffing Index leiame txt RCS file home REPOSITORY exemplo biblioteca gnu leiame txt v retrieving revision 2 2 diff r2 2 leiame txt 7 11d6 lt Altera o realizada depois de criado o tagl Modifica es realizadas depois do release Pelo usu rio 2 cvs diff Diffing libs cvs diff Diffing novoDir lt lt lt lt 13 6 Verificando o estado do reposit
96. iret rio novoDir Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 109 Para adicionar toda uma estrutura de diret rios num projeto existente E o mesmo procedimento utilizado para importar todo um projeto A nica diferen a que a path de importa o no reposit rio vai estar relativa a um projeto j existente Veja o exemplo cd novoDir cvs import m msg path proj no repositorio novodir nome release nome tag Para remover um arquivo Voc deve remover o arquivo localmente agendar a remo o e ent o efetivar a remo o com commit rm leiame txt cvs remove leiame txt cvs commit leiame txt O comando a seguir remove o arquivo localmente e no cvs ao mesmo tempo cvs remove f leiame txt Para remover v rios arquivos Voc deve remover os arquivos agendar a remo o e ent o remover efetivamente com commit rm f cvs remove cvs commit m removidos diversos arquivos Dica Se voc fizer altera es locais em um arquivo e depois remover o arquivo n o poder recuper las Para que possa recuperar as altera es deve criar uma vers o do arquivo usando o comando commit Para remover diret rios V para dentro do diret rio que quer deletar e delete todos os arquivos e o diret rio usando cd nomeDir cvs remove f cvs commit A seguir delete o diret rio cd cvs remove nomeDir
97. isto o texto aparece colorido Para maiores informa es sobre o emacs procure no http www altavista com por emacs programming Se voc gosta de outros editores de texto n o tem problema Use o que voc conhece Os principais comandos de um editor de texto s o os famosos cut ctrl w copy alt w e past ctrl y O undo ctrl x u o search ctrl s palavra e o comando para salvar o arquivo ctrl x ctrl s e fechar o programa ctrl x ctrl c Apresenta se nas se es que seguem os principais comandos do editor emacs 2 2 Comandos do editor emacs Lista se a seguir de forma resumida os principais comandos do emacs A letra representa o CTRL 2 2 1 Help hn Emacs news h Info h m Modo de descri o ha Comando apropos ht Emacs tutorial h f Descri o da fun o 25 CAPITULO 2 EDI O DE TEXTO EMACS E VI 26 AX Alt x Acesso a fun o de um nico caracter Acesso a comando de uma palavra 2 2 2 Movimento do cursor use as setas de dire o Alt lt Home pageUp p b f 4a Ne Alt b Alt f Alt gt pageDown End Inicio do arquivo Inicio do arquivo Inicio da pagina In cio do par grafo Linhas Fim do par grafo Palavras Fim do arquivo Fim da p gina Fim do arquivo 2 2 3 Cut Copy Paste Undo Alt w Aw del Alt d Alt del k Alt k Apostila de Programa o Para Linux Unix Copy Cut Paste Undo Undo Paste sucessivo
98. isto ee Ree EE HSE RRR eR REE ee 95 Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno SUM RIO 5 13 Introdu o ao Controle de Vers es Com o CVS 100 13 Oque O CVS so hh ae Bh Sea e a E A He Bode BOR O Bode G8 100 13 2 C mand s dO CVS su a soe w ae E 4S aos Gas DES Pas Be oo a oe Sees 101 13 3 Seq encia de trabalho 6k we hx OR RR ERO RE OR ROR OO ES 103 13 3 1 Roteiro para criar um reposit rio 0 000002 ee 103 13 3 2 Para importar os arquivos de seu projeto antigo para dentro do reposit rio 104 13 3 3 Dara b ix r o Projeto ocal oe are ed Bete 8 Se Shoe Bg Bhd Seance Sens 105 13 3 4 Para criar m dulos sua pm ala E ee eo a AD ao dhe 2 106 13 3 5 Para adicionar remover arquivos e diret rios 2 04 107 13 3 6 Para atualizar os arquivos locais 0200 e eee eee 110 13 4 Vers es tag s e releases a Gs ke bar Ge See ER SEE dd SES 111 13 4 1 Entendendo as vers es ooa aaa EEE ERA E NAS evs 111 13 4 2 Para criar tags aoaaa oe a SO DN S AS 111 13 4 3 Para criar release s o oo e Lis 13 4 4 Recuperando m dulos e arquivos 0 0 000005 114 13 5 Para verificar diferen as entre arquivos 2 2 0 02 eee eee 115 13 6 Verificando o estado do reposit rio cccccccccc a 115 13 6 1 Hist rico das altera es 2 1 ee 116 13 6 2 Mensagens dedos ias a A ADIA ERRO RAMADA EMA eS 116 13 6 3 ANOMCG
99. kefile e depois o arquivo Makefile A op o f usada para passar o nome do arquivo makefile Um arquivo de projeto do Borland C e do MFC tem um formato propriet rio que s pode ser lido por estes programas Um arquivo de projeto do kdevelop um arquivo ASCII podendo ser editado em qualquer editor simples 39 CAP TULO 5 MAKE 40 Prot tipo do make make farg makefile op es alvos e Indica vari veis do ambiente que devem prevalecer sobre atribui es feitas no make k Desconsiderar erros n Apenas lista os comandos sem execut los p Imprime alguns resultados r Despreza regras intr nsecas t Atualiza data e hora 5 Modo silencioso farg makefile Especifica o nome do arquivo makefile 5 3 Formato de um arquivo Makefile Basicamente um arquivo makefile dividido em uma parte com defini es de vari veis e outra parte com sub rotinas a serem executadas A primeira parte define vari veis a serem utilizadas As vari veis incluem o nome do compilador as paths de inclus o de arquivos e bibliotecas e listagens de arquivos a serem processados 5 3 1 Criando vari veis em um arquivo Makefile O make aceita que voc defina vari veis em seu arquivo makefile e depois use estas vari veis nas etapas de compila o No exemplo a seguir cria uma vari vel e usa seu conte do Observe que para obter o valor da vari vel voc deve usar um 0 Ao usar VARIAVEL o make substit
100. lasse pra formata o de entrada e sa da include lt iomanip gt Classe de vetores do container vector include lt vector gt Classe para algoritimos gen ricos include lt algorithm gt Define estar usando espaco de nomes std using namespace std Defini o da fun o main int main Cria vector do tipo int com nome v vector lt int gt v int data cout lt lt No DOS um ctrl d encerra a entrada de dados lt lt endl cout lt lt No Mac _ um ctrl d encerra a entrada de dados lt lt endl cout lt lt No Linux um ctrl d encerra a entrada de dados lt lt endl do cout lt lt nEntre_ com_o dado lt lt setw 3 lt lt v size lt lt cin gt gt data cin get acidiona ao final do vetor o objeto data v push_back data Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 3 OS PROGRAMAS DIFE PATCH INDENT 35 while cin good Acessa partes do vector usando fun es front e back cout lt lt inPrimeiro elemento do vetor lt lt v front lt lt nUltimo elemento do vetor lt lt v back lt lt endl mostra o vetor for int i 0 i lt v size itt cout lt lt v lt lt setw 3 lt lt i lt lt J lt lt setw 5 lt lt v i lt lt 4 cout lt lt endl cout lt lt v empty vazio n o vazio lt lt endl Chama fun
101. ma o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 3 OS PROGRAMAS DIFE PATCH INDENT 32 int x cin gt gt x std cout lt lt x lt lt x lt lt std endl l return 0 Veja a seguir 0 arquivo gerado pelo comando diff u e06a hello cpp e06b hello cpp No inicio do arquivo a nomenclatura se refere ao arquivo e06a hello cpp e ao arquivo e06b hello cpp Observe que no formato u aparecem todas as linhas precedidas por um sinal O sinal indica que a linha saiu e o sinal que entrou Listing 3 5 Arquivo diff u e06a hello cpp Tue Jun 4 13 23 49 2002 e06b hello cpp Tue Jun 4 13 24 46 2002 3 6 3 11 int main std cout lt lt Oi tudo bem lt lt std endl return 0 std cout lt lt Entre com x lt lt std endl int x cin gt gt x std cout lt lt x lt lt x lt lt std endl return 0 3 1 1 Senten as para o diff e O formato gerado pelo diff u o mais claro e Voc pode gerar um arquivo com as diferen as Exemplo diff e06a hello cpp e06b hello cpp gt diferencas txt e O formato padr o gerado pelo diff usado pelo programa patch e Existem outros programas para comparar arquivos veja nas p ginas man de seu GNU Linux os programas diff3 compara 3 arquivos wdiff mp sdiff e Ao editar a sa da do comando diff no programa emacs o mesmo aparece com sintaxe especial 3 2 O programa patch
102. ma o seu c digo o seu real funcionamento suas qualidades e seus problemas 64 CAP TULO 10 VERS O DE DEPURA O FINAL E DE DISTRIBUI O 65 Um formato mais moderno e democr tico distribuir tanto os arquivos de cabe alho h como os de implementa o cpp este o sistema de distribui o do GNU Linux Para distribuir seu c digo voc pode utilizar uma das op es descritas a seguir Distribuir o seu c digo fonte em um arquivo tar gz 1 Gera o arquivo de distribui o tar cvzf nomeArquivo tar gz path do programa 2 Permite o acesso dos usu rios pela internet ou pela distribui o de disketes zip cd Distribuir o seu c digo fonte com patchs atualiza es Al m de distribuir o seu c digo com o arquivo tar gz voc pode distribuir upgrades isto distri bui es que acrescentam apenas as modifica es que foram realizadas no c digo A grande vantagem que o usu rio precisa baixar arquivos pequenos O roteiro abaixo mostra como distribuir atualiza es de c digo com patchs Programador etapa 1 1 Gera o programa make testa se o programa esta ok 2 Gera a distribui o tar gz se o arquivo makefile foi configurado para gerar uma distribui o make dist ou cria um arquivo compactando todo o c digo com o tar tar cvzf prog tar gz path do programa Usu rio etapa 1 1 Baixa descompacta compila e instala o programa ftp site com o programa login get prog ta
103. micas o mesmo fica menor pois as biblio tecas s o carregadas em tempo de execu o e Um programa que fa a uso de uma biblioteca din mica n o precisa ser recompilado se ocor reram modifica es na biblioteca S ser necess rio modificar o programa que acessa a bi blioteca din mica se o mesmo utilizar objetos da biblioteca que sofreram modifica es na sua interface Veja a seguir um arquivo makefile para gerar o programa e87 Polimorfismo cpp anteriormente apre sentado Parte da listagem inclue instru es para o programa libtool que ser apresentado no Cap tulo 29 Listing 6 4 Arquivo makefile com bibliotecas est ticas e din micas E DEFINICOES ARQUIVOS e87 TCirculo cpp e87 TElipse cpp e87 TPonto cpp e87 Polimorfismo cpp Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 52 OBJETOS e87 TCirculo o e87 TElipse o e87 TPonto o DIRINCLUDE I usr include gt I usr include DIRLIBD home andre Andre ApostilasPessoais ApostilaProgramacao Exemplos cursocpp Cap GNU biblioteca PARAMETROSLIB 1m COMPILADOR g LIBS TPonto LIBD TPonto PROG e87 Polimorfismo cpp AR Sn Lista de op es list obj Gera objetos comuns exe Gera executavel comum all obj exe libs Gera biblioteca estatica exes Gera execut vel usando biblioteca est tica alls libs exelibs libd Gera biblioteca din mica exed Gera execut
104. ndos do shell teis Lista se a seguir alguns comandos de shell teis para programadores Uma descri o mais de talhada dos mesmo pode ser encontrada em apostilas livros sobre o GNU Linux Unix Voc pode obter informa es simplificadas sobre estes comandos usando o programa man de manual Use o comando man nomeDoPrograma para ver um manual simples do programa Vers es mais atuali zadas dos manuais destes programas s o obtidos com info nomeDoPrograma Voc tamb m pode obter um help resumido usando nomeDoPrograma help Nos exemplos apresentados a seguir os coment rios ap s o sinal n o devem ser digitados Se voc j um usu rio experiente do GNU Linux pode pular esta parte Diret rios Diret rio atual Diret rio pai Ex cd Diret rio HOME do usu rio Ex cd cd Muda diret rio corrente cd home philippi Caminho completo C aulas USE Caminho relativo cd Alterna para diret rio anterior pwd Mostra a path do diret rio corrente Is Lista o conte do do diret rio l Lista detalhada a Mostra execut vel e ocultos b N mero de links do arquivo m Mostra tudo em uma linha F Mostra dos diret rios X Mostra em colunas Uma excelente apostila de refer ncia sobre o GNU Linux encontrada em http www cipsga org br Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 13
105. ndre Desenvolvimento LIB LMPT api diret rio de sa da OUTPUT LANGUAGE English linguagem EXTRACT ALL YES extrair todas as informa es EXTRACT PRIVATE YES incluir atributos fun es privados EXTRACT STATIC YES incluir atributos fun es est ticas HIDE UNDOC MEMBERS NO HIDE UNDOC CLASSES NO fe Eis RE co Tp Sp Gi o a a ae o pt dei ES de Gm ean Si pa ST aS a configuration options related to the LaTeX output DE a a a pa DE Tr ii apo a UG a DT A RD ey ai O o a a a GENERATE LATEX YES LATEX OUTPUT diret rio opcional por default cria diret rio latex COMPACT LATEX NO PAPER TYPE alwide formato da folha EXTRA PACKAGES LATEX HEADER link para header PDF HYPERLINKS YES gerar links para pdf USE PDFLATEX YES gerar arquivo pdf LATEX BATCHMODE NO ES ES a qa OS Se Shes Se a SU gq eee Ree eee configuration options related to the RIF output A Seb caio OQ RE peat e E a a ST Si Si E i I a ak ES Sa a RS GENERATE RTF NO RTF OUTPUT COMPACT RTF NO RTF HYPERLINKS NO RTF STYLESHEET FILE RTF EXTENSIONS FILE AR Lp etal SA Sa id ma DS ta a Cd PGS ES a de Da a pd iia E a ga a a pia EE qa get a aly Sa ap oat aa configuration options related to the man page output ba en e E q Dig o DOTE Pd a ie O ni REA a a e PET E Siga Do ES ee eee en a ee GENERATE MAN NO MAN OUTPUT MAN EXTENSION MAN LINKS NO e Ca qi mp a E pe q Tp Cy Epp E a Sl qu pp pr
106. o instalada for anterior emite mensagem de erro AC REVISION revision info Inclue mensagem no in cio dos arquivos informando o n mero da revis o Pesquisando programas AC PROG CPP Seta a vari vel CPP com o nome do pr processador C existente AC PROG CXX Verifica se j foi definida a vari vel CXX ou CCC nesta ordem Se n o definida procura o compilador C e seta a vari vel CXX Se o compilador for da GNU seta a vari vel GXX yes Se CXXFLAGS n o foi definido seta como g 02 AC PROG CC Identifica o compilador C e define a vari vel CC com o nome do compilador encontrado Adicionalmente se encontrou o GNU GCC define a vari vel GCC yes caso contr rio GCC AC PROG CXXCPP Seta a vari vel CXXCPP com o nome do pr processador C AC PROG INSTALL Seta a vari vel INSTALL com a path compat vel com o programa de instala o BSD Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 89 AC PROG LN S Verifica se o sistema aceita links simb licos e seta a vari vel LNS como In s AC PROG RANLIB Seta a vari vel RANLIB se o ranlib esta presente AC CHECK PROG vari vel programa a o True a oFalse Checa a exist ncia da vari vel e do programa se ok realiza a o true se false realiza a o false AC CHECK PROGS vari vel programas a o True a oFalse Checa a exist ncia da vari vel e dos programas se ok re
107. ocumenta o api gerada pelo doxygen inclu na distribui o desta apostila o arquivo LIB LMPT api tar gz Voc pode descompactar este arquivo e ver como fica a documenta o gerada com o seu bronser netscape A t tulo ilustrativo apresenta se na Figura a hierarquia TMatriz da biblioteca LIB_LMPT Figura 11 1 Ilustra o da hierarquia TMatriz da biblioteca LIB_LMPT TMatriz2D TMatriz3D Tvetor H l c 1 TCamaraZD Timagem TRotulador2D TCamara3D Timagem3D TRotulador30 THistograma TimagemVirtual TRotulador2DCm Apresenta se na Figura a hierarquia da classe TRotulador3D Observe a rela o da classe TRotulador3D com as demais classes Apresenta se na Figura as depend ncias do arquivo TRotulador3D Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 15 Figura 11 2 Ilustra o da hierarquia da classe TRotulador3D da biblioteca LIB LMPT TBaseMatriz j vConversao perimetroO bjetos area Objetos TMatriz3D TRotulador pm 11 4 Documenta o profissional com sgml xml LyX Vimos que a documenta o de c digo um tipo de documenta o que inclu da dentro do c digo utilizando o formato JAVA DOC Que o programa doxy gem utilizado para gerar diversos arquivos html que incluem a documenta o de cada arquivo da biblioteca ou programa e que com o doxygem pode se gerar s
108. ois de localizado o arquivo que voc deseja baixar o mesmo pode ser obtido com o comando get nome do arquivo Com quit voc encerra a conex o ftp help Lista de todos os comandos ftp Pausa o ftp e inicia o shell comando Executa um comando do shell Conectando open h Inicia conex o com host h user Define usu rio Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 22 ascii binary Transfer ncia de arquivo no formato ascii Transfer ncia de arquivo no formato bin rio hash yes no Mostra o do arquivo transferido prompt yes no Aguarda resposta para transfer ncia de m ltiplos arquivos status get mget send cd nome cdup dir ou ls lcd pwd quit close Exibe configura o atual Puxa o arquivo para seu computador Puxa diversos arquivos Envia um arquivo ou put ou mput Muda o diret rio Diret rio pai Mostra diret rio com detalhes Muda diret rio local Mostra a path corrente Encerra a conex o Encerra conex o Agora voc j conhece os comandos e programas mais utilizados em um terminal do GNU Linux Podendo navegar criar deletar e mover diret rios Procurar e visualizar o conte do de arquivos Como dito anteriormente voc pode consultar o manual de sua distribui o para obter maiores informa es sobre estes comandos 1 3 Diret rios teis para programadores Q
109. ot run module program if any p Check out files to standard output avoids stickiness s Like c but include module status r rev Check out revision or tag implies P is sticky D date Check out revisions as of date implies P is sticky d dir Check out into dir instead of module name k kopt Use RCS kopt k option on checkout is sticky j rev Merge in changes made between current revision and rev Specify the help global option for a list of other help options V para o diret rio onde deseja trabalhar e crie uma c pia de trabalho com checkout Exemplo mkdir tmp workdir cd tmp workdir cvs checkout exemplo biblioteca gnu cd exemplo biblioteca gnu ls la Observe que todos os arquivos do projeto foram copiados para o diret rio tmp workdir exemplo biblioteca gnu Tamb m foi criado o diret rio cvs Este diret rio mantido pelo programa cvs 13 3 4 Para criar m dulos Bem com o comando checkout fizemos uma c pia de trabalho do projeto exemplo biblioteca gnu Mas o nome exemplo biblioteca gnu muito extenso e seria melhor um nome abreviado Um m dulo exatamente isto um nome abreviado para uma path grande no diret rio do reposit rio Veja a seguir como criar um m dulo 1 Baixa o arquivo modules localizado em home REPOSITORY CVSROOT modules cvs checkout CVSROOT modules 2 Edita o arquivo modules CVSROOT modules emacs 3 Inclua a linha abaixo nome_m dulo path lib gn
110. pode ser montado apenas com os arquivos de c digo h cpp e o arquivo Makefile O problema deste formato a exist ncia de centenas de Unix GNU Linux sendo cada um destes um pouco diferentes entre si Por exemplo o compilador pode se chamar CC gcc c g Na pr tica isto implica na necessidade de se corrigir os arquivos Makefile para cada m quina alvo Para solucionar este problema foram desenvolvidos pela GNU um conjunto de programas que automatizam a gera o de c digo para as mais variadas plataformas Dentre estes programas os mais usuais s o o aclocal o autoheader o automake o autoconf e o libttol Estes programas s o brevemente descritos neste cap tulo Observe que ao desenvolver um programa utilizando as ferramentas multiplataforma da GNU voc poder compilar seu c digo em qualquer m quina Unix GNU Linux Aix Solaris MacOS X Windows Pois um projeto GNU inclui o configure um script de shell que cria os arquivos Makefile para cada m quina Observe na Tabela o diagrama das tarefas executadas pelo programador O primeiro programa a ser executado o aclocal o mesmo recebe como entrada um conjunto de arquivos de c digo e um arquivo configure in gerando os arquivos aclocal m4 e acsite m4 A seguir executa se o ifnames para identifica o dos includes e defines em comum O programa dor usa o autoscan para gerar um esqueleto inicial do arquivo configure scan a seguir o programador usa um edito
111. posit rio Prot tipo cd path completa projeto antigo cvs import m mensagem path proj no repositorio nome release nome tag m msg E uma mensagem curta contento informa o sobre o projeto path proj no repositorio E a path para o diret rio do projeto no reposit rio nome release E o nome do release inicial nome tag Informa o tag inicial do projeto normalmente start Vamos adicionar ao reposit rio o projeto exemplo biblioteca gnu localizado em minha m quina no diret rio ApostilaProgramacao Exemplos Cap GNU biblioteca cd ApostilaProgramacao Exemplos Cap GNU biblioteca cvs import m Exemplo de biblioteca usando ferramentas gnu exemplo biblioteca gnu R1 start A saida gerada pelo comando import apresentada na listagem a seguir Observe que a letra N indica um arquivo novo a letra I um arquivo ignorado arquivos bak s o ignorados pelo cvs A biblioteca recebe um L de library Listing 13 4 Sa da do comando cvs import andre mercurio biblioteca S cvs import m Exemplo de biblioteca usando ferramentas gnu exemplo biblioteca gnu R1 start exemplo biblioteca gnu e87 Polimorfismo cpp exemplo biblioteca gnu e87 Programa cpp exemplo biblioteca gnu e87 TCirculo cpp I exemplo biblioteca gnu doxygem config bak exemplo biblioteca gnu makefile exemplo biblioteca gnu e87 TCirculo h exemplo biblioteca gnu doxygem config exemplo biblioteca gnu uso makefile exemplo biblioteca gnu
112. r defini o de vari veis de shell Voc pode salvar os resultados em caches ou imprimir os resultados das pesquisas na tela As macros abaixo mostram como fazer Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 91 AC DEFINE vari vel valor descri o Cria vari vel define Ex AC DEFINE EQUATION a gt b AC SUBST vari vel Cria uma vari vel de sa da a partir de vari vel de shell Define o nome de uma vari vel que dever ser substitu da nos arquivos Makefile AC SUBST FILE vari vel O mesmo que acima AC CACHE VAL cache id comando do id Veja manual do autoconf AC CACHE CHECK Verifica o cache AC CACHE LOAD Carrega algo do cache AC CACHE SAVE Salva algo no cache AC MSG CHECKING descri o Informa o usu rio que executou o configure o que esta fazendo AC MSG RESULT descri o do resultado Normalmente uma mensagem com o resultado do que foi checado AC MSG ERROR descri o da mensagem de erro Emite uma mensagem de erro AC MSG WARN descri o da mensagem de warning Emite uma mensagem de warning Como definir vari veis no configure in e usar no makefile am Apresenta se a seguir um exemplo de defini o de vari vel no arquivo configure in que vai ser usada no arquivo makefile am No arquivo configure in SUBDIRS source doc AC SUBST SUBDIRS No arquivo makefile am lin
113. r como o emacs para modificar o arquivo configure scan gerando o configure in O autoheader usado para gerar o arquivo config h O programador deve gerar diversos arquivos makefile am um para cada diret rio e ent o executar o automake O automake converte os arquivos makefile am em makefile podendo os mesmos ser executados com o programa make descrito no Cap tulo 2O ambiente de desenvolvimento do kdevelop tem um wizard que gera automaticamente todos estes arquivos para voc 78 CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 79 Finalmente o programador executa o programa autoconf O autoconf gera um script de configura o do programa usando para isto o arquivo configure in A sa da do autoconf o arquivo configure o mesmo ser executado pelo usu rio para gerar os makefiles espec ficos para a m quina do usu rio Veja na Tabela a sequ ncia executada pelo usu rio Tabela 12 1 Sequ ncia executada pelo programador para montagem de programas multi plataforma usando o padr o GNU Entrada Programa executado Sa da 1 h cpp aclocal aclocal m4 configure in acsite m4 2 h cpp ifnames Lista dos defines dos diversos arquivos 3 h cpp autoscan configure scan 4 configure scan usu rio configure in configure in acsite m4 5 config h top acconfig h autoheader config h in config h bot 6 usuario Makefile am 7 Makefile am automake Makefile
114. r gz quit tar xvzf prog tar gz cd prog configure make make install Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 10 VERS O DE DEPURA O FINAL E DE DISTRIBUI O 66 Programador etapa 2 1 Faz atualiza es no c digo upgrades Edita os arquivos com o programa e inclue atualiza es e corre es de bugs 2 Gera os arquivos com as diferen as coisas novas nos c digos diff argl old cpp argl cpp gt argl dif 3 Gera o pacote com as atualiza es tar cvzf path versaoold versaonova tar gz dif Usu rio etapa 2 1 Baixa e descompacta o arquivo path versaoold versaonova tar gz ftp site com o programa login get path versaoold versaonova tar gz tar xvzf path versaoold versaonova tar gz 2 Executa o programa patch para que o c digo antigo arql cpp seja alterado incluindo as altera es da nova vers o ou seja gera um novo arquivo arql somando ao arquivo arql as novidades listadas no arquivo arq1 dif cp argl cpp argl cpp patch arql cpp argl dif 3 Configura compila e instala o programa configure make make install 4 As altera es realizadas no arquivo arql cpp podem ser revertidas voltar a ser o que era executando se patch r argl cpp argl dif Distribuir o seu c digo fonte atrav s do uso do CVS Voc ter de ter um servidor de CVS instalado e funcionando Deve criar um reposit rio para o seu programa com releases
115. resentar a seguir um exemplo de arquivo configure in e depois descrever rapidamente as macros que voc pode incluir no configure in 12 7 3 Roteiro do autoconf 1 Edite o configure in acrescentando as macros AM INIT AUTOMAKE nome programa versao AC REPLACE FUNCS LIBOBJS listaobjetos da biblioteca AC_SUBST LIBOBJS 12 7 4 Estrutura de um arquivo configure in Como visto voc pode utilizar o autoscan para gerar um esbo o inicial do arquivo configure in O arquivo configure in usado pelo autoconf para montagem do programa shell configure O configure in composto de um conjunto de macros que ser o usadas para testar a configura o de seu micro qual compilador esta instalado sua localiza o Basicamente o programador escreve um arquivo configure in contendo Incl Incl chec chec chec chec chec chec chec chec Incl ue ue KS KS KS KS KS KS KS KS ue as macros de inicializa o AC INIT as macros de testes for prograns for libraries for headers files for typedefs for structures for compiler caracter stics for library functions for system services as macros de finaliza o AC OUTPUT Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 87 12 7 5 Exemplo de um arquivo configure in Apresenta se a seguir o exemplo de um arquivo configure in Observe que uma linha dnl um
116. riado o release revision 2 1 date 2002 08 12 23 12 05 author andre state Exp lines 0 0 Criado o release 2 revision 1 3 date 2002 08 12 23 10 32 author andre state Exp lines 1 0 Altera es no leiame txt depois de criado o tagl revision 1 2 date 2002 08 12 22 45 56 author andre state Exp lines 5 0 Modifica es no arquivo leiame txt revision 1 1 date 2002 08 12 21 33 43 author andre state Exp Efetivamente adicionado o arquivo leiame txt Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 117 13 6 3 Anota es Voc pode obter uma lista das anota es realizadas Mostra vers o nome usu rio data mensagem Prot tipo cvs annotate 13 6 4 Verificando o status dos arquivos O comando status mostra uma s rie de informa es a respeito do arquivo O mesmo pode ser utilizado para verificar quais arquivos precisam ser atualizados Veja a seguir o prot tipo Prot tipo cvs status y Mostra ainda os tag s R Processamento recursivo l Somente este diret rio Informa es listadas pelo comando status Up to date O arquivo n o foi alterado Locally modified O arquivo foi modificado localmente Locally added O arquivo foi adicionado localmente Locally removed O arquivo foi removido localmente Needs checkout O arquivo foi alterado por terceiro e precisa ser atualizado
117. rio O cvs tem um conjunto de comandos que voc pode usar para verificar o estado dos arquivos armazenados no reposit rio Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 116 13 6 1 Hist rico das altera es Voc pode obter uma lista com o hist rico das altera es realizadas Mostra data hora usu rio path usada ou m dulo ou ramo diret rio de trabalho Prot tipo cvs history 13 6 2 Mensagens de log Voc pode obter uma lista dos log s do arquivo Mostra path no reposit rio vers o nomes simb licos revis es e anota es realizadas Prot tipo cvs log arquivo Veja a seguir a sa da do comando cvs log leiame txt Observe as diferentes revis es e anota es o nome do autor Observe nos nomes simb licos o tagl e a referencia a vers o 1 2 isto significa que quando o usu rio solicitar o tagl corresponde a vers o 1 2 do arquivo leiame txt Listing 13 13 Sa da do comando cvs log leiame txt RCS file home REPOSITORY exemplo biblioteca gnu leiame txt v Working file leiame txt head 2 2 branch locks strict access list symbolic names tagl 1 2 keyword substitution kv total revisions 5 selected revisions 5 description adicionado arquivo leiame txt revision 2 2 date 2002 08 12 23 28 55 author andre state Exp lines 4 0 Modifica es realizadas no leiame txt depois de c
118. rito para gera o do Makefile final isto os arquivos Makefile in ser o usados pelo configure para gera o dos arquivos Makefile finais A grande vantagem n o precisar reescrever os arquivos Makefile para cada m quina em que voc vai compilar o programa Vimos no cap tulo Make como criar um arquivo makefile simples O automake cria arquivos makefile complexos O automake suporta tr s tipos de estruturas de diret rio flat Todos os arquivos est o em um nico diret rio deep Existem v rios subdiret rios e arquivos de configura o no diret rio base Dentro do Makefile am existe a macro SUBDIRS shallow O c digo prim rio esta no diret rio de mais alto n vel e os outros c digos em subdiret rios usado em bibliotecas O automake suporte tr s tipos de op es de verifica o foreign Checa somente o necess rio adotado pelo kdevelop gnu o default verifica a presen a dos arquivos padr es da gnu INSTALL NEWS RE ADME COPYING AUTHORS Changelog enits E um padr o que verifica arquivos adicionais ao padr o gnu E o mais extenso Padroniza o do formato dos nomes Os nomes das macros do automake obedecem um padr o uniforme Se o seu pacote tem um programa chamado meu programa 1 o mesmo ser tratado como meu programa 1 ou seja substitui por e por Prot tipo e par metros do automake automake op es a add missing amdir dir Define diret rio help
119. rograma ar utilizado para manipular arquivos em um formato bem estruturado O ar tamb m cria tabelas com s mbolos e refer ncias cruzadas O programa ar que aglutina todos os objetos em uma lib isto agrupa os arquivos o em uma lib Veja a seguir o prot tipo e um exemplo de uso do ar Prot tipo e par metros do ar ar op es arquivos t Lista os objetos da lib biblioteca r Substitue fun es quando necess rio arquivos antigos q Adiciona no modo apend 5 Atualiza a tabela de s mbolos C Cria o arquivo se este n o existe v Modo verbose 44 CAP TULO 6 BIBLIOTECAS 45 Exemplo ar cru libNome a argl o arg2 o arg3 0 Neste exemplo o programa ar vai juntar os arquivos arql o arq2 0 arq3 0 e gerar o arquivo libNome a Veja a seguir a lista completa de op es do comando ar A mesma pode ser obtida em seu sistema digitando ar help Listing 6 1 Sa da do comando ar help Usage ar X32 64 dmpgrstx abcfilNoPsSuvV member name count archive file file ar M lt mri script commands d delete file s from the archive m ab move file s in the archive p print file s found in the archive q f quick append file s to the archive r ab f u replace existing or insert new file s into the archive E display contents of archive x 0 extract file s from the archive command specific modifiers a put file s after member name b put f
120. rprise Impt ufsc br echo SPATH Deve se setar na m quina cliente o endere o do programa cvs no servidor com a vari vel de ambiente CVS SERVER 13 8 1 Vari veis de ambiente Vari veis de ambiente do cvs definidas no arquivo profile CVSROOT Diret rio de trabalho do cvs CVS SERVER Endere o do programa cvs na m quina servidora CVSEDITOR Editor default do cvs CVSUMASK Define o formato dos arquivos novos a serem criados Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 121 13 9 Como baixar programas de terceiros usando o cvs Veja a seguir as instru es postadas no site http www devel lyx org cvs php3 e que s o utilizadas para baixar o programa LyX usando o cvs Anonymous CVS login In order to make anonymous CVS access easier you should set your CVSROOT environment variable to pserver anoncvs anoncvs lyx org usr local lyx cvsroot Alternatively you can use the d option to the cvs commands Now just do cvs login The password is lyx Finally cvs checkout lyx devel This will make a directory lyx devel and download lots of files into that directory Of course you can say cvs checkout lyx 1 O x instead depending on which module you d like to download 13 10 Frontends Existem front ends para o programa cvs Para o GNU Linux de uma olhada no cervisia encon trado no site http cervisia source
121. rquivo Veja o prot tipo e um exemplo a seguir Prot tipo cvs update j vers oNova j vers o Velha nomeArquivo cvs update j 2 j tagl leiame txt U leiame txt RCS file home REPOSITORY exemplo biblioteca gnu leiame txt v retrieving revision 2 2 retrieving revision 1 2 Merging differences between 2 2 and 1 2 into leiame txt Observe a mensagem apresentada O cvs recupera a vers o 2 2 relativa ao release j 2 e a vers o 1 2 relativa ao tagl e mistura as duas no arquivo leiame txt 13 7 3 Mesclando o ramo de trabalho com o ramo principal Digamos que voc esta trabalhando no ramo principal Que um segundo usu rio criou o ramo B e fez altera es no ramo B Agora voc quer incluir as altera es do ramo B no ramo principal 1 Baixa o m dulo de trabalho cvs checkout nome modulo 2 Baixa o upgrade do ramo B Ou seja atualiza os arquivos locais mesclando os mesmos com os do ramo B cvs update j ramo B 3 Resolve os poss veis conflitos Alguns arquivos que tenham sido modificados por outros usu rios podem ter conflitos de c digo voc precisa resolver estes conflitos Corre o de poss veis conflitos de c digo 4 Copia os arquivos de volta para o reposit rio atualizando o reposit rio cvs commit m Ramo mestre mesclado com ramo B 5 Para deletar o diret rio local de trabalho use com cuidado rm f r path local Apostila de Programa o Para Linux Unix www Impt ufsc br Eng
122. s ac cv prog cxx works S ac cv prog cxx works yes ac_cv_prog_gcc ac_cv_prog_gcc yes ac_cv_prog_gxx ac_cv_prog_gxx yes ac_cv_prog_make_make_set ac_cv_prog_make_make_set yes LIB_LMPT config h in config h in Generated automatically from configure in by autoheader Name of package ftundef PACKAGE Version number of package tundef VERSION LIB_LMPT config h config h Generated automatically by configure config h in Generated automatically from configure in by autoheader Name of package define PACKAGE lib_Impt Version number of package define VERSION 0 1 LIB_LMPT config log This file contains any messages produced by compilers while running configure to aid debugging if configure makes a mistake configure 561 checking for a BSD compatible install configure 614 checking whether build environment is sane configure 671 checking whether make sets MAKE configure 717 checking for working aclocal configure 730 checking for working autoconf configure 743 checking for working automake configure 756 checking for working autoheader configure 769 checking for working makeinfo configure 899 checking whether the C compiler gcc works configure 915 gcc o conftest conftest c 1 gt amp 5 configure 786 checking for gcc configure 941 checking whether the C compiler gcc
123. sc br Eng Andr Duarte Bueno Refer ncias Bibliogr ficas 1 Per Cederqvist Version Management with CVS GNU 1993 2 Mendel Cooper Building and Installing Software Packages for Linux HOWTO LDP 1999 3 Hank Dietz Linux Parallel Processing HOWTO LDP http yara ecn purdue edu ppli nux PPHOWTO pphowto html 1998 4 Ricardo Gratti Bibliotecas Compartilhadas volume 5 Revista do Linux 1999 5 Ricardo Gratti Bibliotecas Compartilhadas volume 5 Revista do Linux 1999 6 Cameron Hughs and Tracey Hughes Object Oriented Multithreading using C architectures and components volume 1 John Wiley Sons 2 edition 1997 7 Guilherme Wunsch Manika Super Computador a Pre o de Banana volume 2 Revista do Linux 1999 8 Ralf Nolden and Kdevelop Team The User Manual to KDevelop kdevelop team 1998 9 Jacek Radajewski and Douglas Eadline Beowulf HOWTO LDP http www sci usq edu au staff jacek beowulf BDP 1998 10 Eric Steven Raymond Software Release Practice HOWTO LDP 2000 11 Alavoor Vasudevan C C Beautifier HOWTO LDP 2001 12 Alavoor Vasudevan C Programming HOWTO LDP 2001 13 Kurt Wall Linux Programming Unleashed volume 1 SAMS 2 edition 2001 125
124. stra vers o do aclocal 12 3 ifnames O programa ifnames pesquisa toda a estrutura de diret rios e lista todos os defines dos arquivos he cpp O programa ifnames agrupa todos os defines em um nico arquivo o que til para gerar o arquivo config h in Prot tipo do ifnames ifnames h help mdir macrodir dir version file help h Mostra help verbose v Modo verbose version Mostra vers o 12 4 autoscan O autoscan pesquisa a estrutura de diret rios e busca arquivos h e cpp gerando o arquivo configure scan O autoscan extrai informa es do c digo e dos headers como chamadas de fun es Prot tipo e par metros do autoscan autoscan macrodir dir help verbose help Mostra help verbose v Modo verbose version Mostra vers o srcdir Diret rio a ser escaneado Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 12 SEQUENCIA DE MONTAGEM DE UM PROGRAMA GNU 81 12 4 1 Roteiro do autoscan 1 Execute o autoscan para gerar o configure scan O arquivo configure scan serve de esbo o inicial para o arquivo configure in 2 Corrija o arquivo configure scan incluindo ali as macros e defini es necess rias 3 Renomeie o arquivo configure scan para configure in Observe que o arquivo configure in um gabarito usado para gerar o arquivo configure final 12 5 autoheader O autoheader pode ser usado para ger
125. sual Exemplo g o nomeExecut vel nomePrograma cpp libNome la Formato usando o libtool Exemplo libtool gt o nomeExecut vel nomePrograma cpp libNome a 7 7 Instalando a biblioteca Formato usual Exemplo como root cp libNome a usr lib ranlib usr lib libNome a Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 7 LIBTOOL 58 Formato usando o libtool Exemplo libtool cp libNome a usr lib ou libtool install c libNome a usr lib libNome la ou libtool install c libs libNome a usr lib libNome so 0 0 libtool install c libs libNome a usr lib libNome la libtool install c libs libNome a usr lib libNome a 7 8 Modos do libtool Para saber mais sobre o funcionamento de cada um dos m dulos abaixo listados execute o co mando libtool help mode MODO Compila o o libtool atua chamando o compilador do sistema libtool help mode compile Linkagem o libtool atua executando a linkagem libtool help mode link Instala o o libtool atua instalando o programa libtool help mode install Execu o o libtool atua executando o programa libtool help mode execute Desinstala o o libtool atua desinstalando o programa libtool help mode uninstall 7 9 Senten as para o libtool e Para executar o gdb com o libtool use libtool gdb nom
126. t usr lib libstdct libc6 2 2 s0 3 0 x401d9000 libm so 6 gt lib i686 libm so 6 0x4021c000 libc so 6 gt lib i686 libc so 6 0x4023f000 lib ld linux so 2 gt lib ld linux so 2 0x40000000 Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 6 BIBLIOTECAS 48 6 1 6 Idconfig O programa ldconfig determina os links necess rios em tempo de execu o para bibliotecas com partilhadas shared libs Prot tipo e par metros do ldconfig 6 2 ldconfig p v libs p Mostra bibliotecas compartilhadas V Modo verbose Conven o de nomes para bibliotecas O nome de uma biblioteca deve iniciar com lib A extens o ser a para bibliotecas est ticas A extens o ser so para bibliotecas din micas Vers es libNome so Vers oMaior Vers oMenor Patch A vers o maior uma vers o incompat vel com as demais A vers o menor inclue novidades A patch inclue corre es de bugs Uma biblioteca que tem o nome encerrado com g cont m instru es de debugagem Uma biblioteca que tem o nome encerrado com p cont m instru es para o profiler gprof 6 3 Bibliotecas usuais Apresenta se na Tabela algumas bibliotecas usuais 6 4 Montando uma biblioteca est tica libNome a Para utilizar a biblioteca o programador precisa dos arquivos com o cabe alho formato como os objetos e as fun es foram constru dos e o arquivo da lib Seqiien
127. t Examining cvs commit Examining libs cvs commit Examining novoDir Checking in Makefile home REPOSITORY exemplo biblioteca gnu Makefile v lt Makefile new revision 2 1 previous revision 1 1 done Checking in arquivo usuario2 txt home REPOSITORY exemplo biblioteca gnu arquivo usuario2 txt v lt arquivo usuario2 txt new revision 2 1 previous revision 1 1 done Checking in leiame txt home REPOSITORY exemplo biblioteca gnu leiame txt v lt leiame txt new revision 2 1 previous revision 1 3 done Prot tipo para criar um release e j deletar a c pia do diret rio local cvs release d diret rio de trabalho 13 4 4 Recuperando m dulos e arquivos O cvs permite que tanto os c digos novos como os antigos possam ser recuperados De uma maneira geral basta passar o nome do arquivo e sua vers o tag release m dulo Prot tipo para recuperar um release Pode se baixar um release antigo passando o nome do release cvs checkout r nome release path projeto no cvs ou o nome do m dulo cvs checkout r nome release nome modulo Prot tipo para recuperar um arquivo de uma vers o antiga cvs update p r nome release nome arquivo gt nome arquivo p Envia atualiza es para sa da padr o a tela r nome release Indica a seguir o nome do release 30u o editor setado com CVSEDITOR No vi digite esc q para sair esc q para sair sem salvar altera es Apostila de Programa o Para L
128. t rio onde o reposit rio vai ser armazenado se necess rio como root mkdir home REPOSITORY e Todos os usu rios que v o usar o cvs devem ter acesso a este diret rio A dica criar um grupo de trabalho com permiss o de leitura e escrita ao diret rio do reposit rio 3 Voc pode criar um grupo cvs adicionar ao grupo cvs os usu rios que ter o acesso ao reposit rio e mudar as permiss es de acesso ao reposit rio chown R cvs home REPOSITORY chmod gtrwx home REPOSITORY e ZA vari vel CVSUMASK usada para controlar a forma como os arquivos e diret rios s o criados Consulte um manual de GNU Linux Unix MacOs X para maiores detalhes 4 O comando init inicializa o uso do cvs adicionando ao diret rio do reposit rio home REPO SITORY alguns arquivos de controle do programa cvs cvs init D uma olhada no diret rio home REPOSITORY observe que foi criado o subdiret rio ho me REPOSITORY CVSROOT Este subdiret rio cont m os arquivos de administra o do cvs e Os arquivos com v s o read only Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 104 13 3 2 Para importar os arquivos de seu projeto antigo para dentro do reposi t rio Voc provavelmente j tem um diret rio com projetos antigos e com arquivos de programa o h cpp O comando import copia o seu diret rio para dentro do re
129. t vel andre mercurio Cap GNU make e06a hello g e06a hello cpp I usr include g I usr include lm o e06a hello Veja abaixo que o make n o compila novamente o que esta atualizado andre mercurio Cap GNU make e06a hello make eQ6a hello est atualizado Limpando os arquivos obj andre mercurio Cap GNU S make clean rm f Ero 0D Observe abaixo que o alvo e06a hello chama o alvo e06a hello o andre mercurio Cap GNU make e06a hello g c e06a hello cpp I usr include gt I usr include o e06a hello o g e06a hello cpp I usr include gt I usr include lm o e06a hello Dica Observe a forma como os alvos foram traduzidos O alvo e06a hello S ARQUIVOS S OBJETOS COMPILADOR S ARQUIVOS DIRETORIOINCLUDE S DIRETORIOLIB S PARAMETROSLIB o e06a hello Foi traduzido da forma g e06a hello cpp I usr include gt I usr include lm o e06a hello Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 5 MAKE 43 5 5 Senten as para o make Para conhecer em detalhes o make baixe o manual do make no site da gnu hnttp www gnu org Os arquivos especificados nas depend ncias devem existir Se n o existirem vai acusar erro Os arquivos de cabe alho h tamb m devem ser inclu dos nas depend ncias Isto evita a men sagem de erro do compilador pela falta dos mesmos Make inteligente se voc pediu para executar o alvo 2 e este depen
130. tex RTF doxygen w rtf styleSheetFile HTML doxygen w html headerFile footerFile styleSheetFile configFile LaTex doxygen w latex headerFile styleSheetFile configFile 5 Use doxygen to generate an rtf extensions file RTF doxygen e rtf extensionsFile If s is specified the comments in the config file will be omitted If configName is omitted Doxyfile will be used as a default 11 3 1 Exemplo de programa documentado A listagem a seguir apresenta um exemplo de programa documentado Listing 11 3 Exemplo de c digo documentado no formato JAVA DOC para uso com o programa doxygem ifndef TTeste h define TTeste h PROJETO Biblioteca LIB LMPT Assunto Ramo TTeste Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX 73 Desenvolvido por Laboratorio de Meios Porosos e Propriedades Termofisicas LMPT Gauthor Andr Duarte Bueno file TTeste h begin Sat Sep 16 2000 copyright C 2000 by Andr Duarte Bueno email andre lmpt ufsc br ny Bibliotecas C C Bibliotecas LIB_LMPT include lt Base _LIB_LMPT_CLASS h gt Documentacao CLASSE TTeste short Classe de teste das diversas classes da LIB_LMPT O objetivo dentro da main criar e chamar TTeste que cria e chama as demais classes Assunto
131. time seconds seconds calls Ts call Ts call name 0 00 0 00 0 00 28 0 00 0 00 _Deque_iterator lt int int amp int 0 gt S buffer size void 0 00 0 00 0 00 21 0 00 0 00 _Deque_iterator lt int int amp int 0 gt operator _Deque_iterator lt int int amp int 0 gt const amp const 0 00 0 00 0 00 17 0 00 0 00 _Deque_iterator lt int int amp int 0 gt operator _Deque_iterator lt int int amp int 0 gt const amp const 0 00 0 00 0 00 15 0 00 0 00 _Deque_base lt int allocator lt int gt 0 gt _Deque_base void 0 00 0 00 0 00 14 0 00 0 00 void destroy lt int gt int int 0 Observe a direita o nome da fun o e a esquerda o tempo de execu o 9 2 Senten as para o profiler e Para aprender a usar o gprof baixe e leia o manual do gprof no site da gnu 62 CAP TULO 9 PROFILER GPROFY 63 e Se voc quer um compilador mais r pido e usa m quinas com processadores pentium pense em usar o pgcc Um compilador descendente do compilador da gnu e otimizado para processadores pentium Procure por pgcc na internet e Voc s deve se preocupar com performance e com o gprof depois que for um bom progra mador Primeira fa a com que os programas funcionem a seguir se preocupe com bugs fa a a documenta o depois de tudo se preocupe com a performance Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 10 Vers o de Depura o Final e de
132. triz h TMatriz T Vetor h TMatriz T Matriz3D h TRotulador T Rotulador h jadetex 3 11 4 openjade 1 3 17 Veja detalhes do docbook sgml e xml no site http www xml org Apresenta se na Figura o site do programa LyX O programa LyX tem total suporte aos formatos docbbok Desta forma voc pode gerar o manual do usu rio em um programa muito simples de usar o LyX e no final pode gerar vers es do seu manual nos formatos html pdf sgml txt Repito que o LyX e utilizado para gerar esta apostila Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 11 DOCUMENTA O DE PROGRAMAS USANDO FERRAMENTAS GNU LINUX ad Figura 11 4 O site do LyX Edit View Search Go Bookmarks Tasks Help E q X 2 a zi A http yo org index php3 bgimage v sa Search Back Forward Reload Stop Print Home af Bookmarks The Document Processor Recent LyX news vse June 6 for the full stories What is LyX is the first V4 LyX is what n advanced ope cuments n 3 ED EJ GR _ Document Done 3 585 secs Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno Cap tulo 12 Sequencia de Montagem de Um Programa GNU Neste cap tulo vamos apresentar o desenvolvimento de programas multiplataforma utilizando as ferramentas da GNU 12 1 Introdu o a programa o multiplataforma com GNU Um projeto comum
133. u exemplo biblioteca gnu 4 Salva o arquivo e envia para o reposit rio com o comando Apostila de Programa o Para Linux Unix www lmpt ufsc br Eng Andr Duarte Bueno CAP TULO 13 INTRODU O AO CONTROLE DE VERS ES COM O CVS 107 cvs commit m adicionado o m dulo exemplo biblioteca gnu gt lib gnu O comando commit usado para devolver para o reposit rio todos os arquivos novos ou modificados Veja na listagem a seguir o prot tipo do comando commit Listing 13 7 Sa da do comando cvs H commit andre mercurio cvs cvs H commit Usage cvs commit nR1f m msg F logfile r rev files n Do not run the module program if any R Process directories recursively 1 Local directory only not recursive k Force the file to be committed disables recursion F logfile Read the log message from file m msg Log message r rev Commit to this branch or trunk revision Specify the help global option for a list of other help options Veja na listagem a seguir a sa da do comando commit executada no diret rio de trabalho ap s a modifica o do arquivo CVSROOT modules Listing 13 8 Sa da do comando cvs commit ap s adi o de um m dulo andre mercurio workdir cvs commit m adicionado o m dulo exemplo biblioteca gnu gt lib gnu cvs commit Examining CVSROOT cvs commit Examining exemplo biblioteca gnu cvs commit Examining exemplo biblioteca gnu libs Checking in CVSROOT modules
134. ue o nome da vari vel pelo seu valor Exemplo NOMEVARIAVEL valor NOMEVARIAVEL e Por conven o as vari veis definidas em um arquivo makefile s o todas mai sculas e Voc pode criar vari veis da forma CC g e E a seguir modificar seu valor acrescentando algo em modo append CC 02 e Make usa um conjunto de vari veis com nomes pr definidos AR Especifica o programa de manuten o de arquivos Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 5 MAKE 41 CC Especifica o compilador default cc CPP Especifica o pr processador C RM Programa de remo o de arquivos default rm f CFLAGS Flags que devem ser passados para o compilador C CPPFLAGS Flags que devem ser passados para o compilador C LDFLAGS Flags que devem ser passados para o linker 5 3 2 Criando alvos em um arquivo Makefile A segunda parte de um arquivo makefile cont m alvos a serem executados O formato padr o para um alvo dado por Prot tipo de um alvo alvo Depend ncias Instru es a serem executadas e As instru es a serem executadas iniciam com um tab e n o 8 espa os e Geralmente o alvo o nome de um arquivo uma biblioteca ou um programa a ser compilado e Alvos usuais em arquivos makefile s o all Executar todas as depend ncias install Instalar o programa uninstal Desinstalar o programa dist Gerar uma distribui o no formato tar gz
135. uem programa no GNU Linux precisa saber onde est o o diret rio com os programas do sistema o diret rio onde s o instalados os programas e onde est o as bibliotecas Veja na Tabela alguns destes diret rios Tabela 1 1 Diret rios importantes para o programador Diret rio Descri o usr bin Programas do sistema usr local bin Programas locais est o aqui usr include Arquivos include usr lib Bibliotecas usr openwin lib Bibliotecas do X window Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 23 1 4 Programas teis para programadores Apresenta se na Tabela uma lista de programas teis usados no desenvolvimento de programas no GNU Linux Estes programas ser o detalhados posteriormente Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 24 Tabela 1 2 Programas teis para desenvolvedores de software no ambiente GNU Linux Programas utilit rios 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
136. uir os principais comandos dos programas telnet e ftp Atualmente o telnet e o ftp est o sendo substituidos pelo ssh O ssh um secure shell permitindo acessar copiar e pegar arquivos de m quinas remotas Isto o ssh funciona como o telnet e o ftp mas com seguran a Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 1 INTRODU O A PROGRAMA O GNU LINUX UNIX 21 telnet O telnet um programa que executado em seu computador e o conecta a outros computadores em qualquer lugar do mundo E como se voc estivesse executando os programas do computador remoto de dentro de seu computador Comando Descri o 2 Lista os comandos open Conecta com um computador remoto display Mostra os par metros da opera o mode Modo linha a linha ou caracter a caracter Set unset Seta os par metros de opera o send Transmitir caracteres especiais status Informa es de estatus Contrl z Suspende o telnet chama o shell fg Retorna do shell para o telnet Volta para o ltimo programa em opera o logout Encerra conex o avisando close Fecha a conex o corrente quit Encerra o telnet ftp O ftp precisa de 2 computadores um cliente e outro servidor O programa ftp cliente executado em seu computador e o programa ftp servidor em um computador remoto O cliente envia comandos como listar diret rios para o servidor o servidor responde mostrando o diret rio Dep
137. ut vel 4 3 Exemplo de uso do gcc g Apresenta se a seguir um exemplo b sico 1 Edita o programa hello cpp com o emacs Abra um terminal e execute emacs hello cpp include lt iostream gt using namespace std int main cout lt lt hello lt lt endl Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 4 COMPILANDO COM GCC G 38 return No emacs use ctrl x ctrl s para salvar o arquivo e ctrl x ctrl qg para sair do emacs 2 Cria o arquivo de pr processamento opcional gt E hello cpp 3 Compila o m dulo hello gera o hello o gt c hello cpp 4 Linka o programa e gera o execut vel g ohello hello o 5 Executa o programa hello 6 Observe que os passos 2 3 e 4 podem ser executados usando gt v ohello hello cpp O v mostra um conjunto de informa es a respeito dos passos da compila o Neste exemplo o nome do programa execut vel hello e foi especificado com a op o ohello 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 hello cpp comum g g2 hello cpp com debuger g o3 hello cpp com otimiza o 4 4 Senten as para o compilador da gnu e Para conhecer em detalhes o gcc baixe o manual do gcc no site da gnu Apostila de Programa o Para Linux Unix www lmpt ufs
138. vo makefile anteriormente apresentado execute o comando Exemplo make clean make libs A sa da gerada pelo makefile dada por andre mercurio libtool biblioteca make libs g c o e87 TCirculo o e87 TCirculo cpp g c o e87 TElipse o e87 TElipse cpp g c o e87 TPonto o e87 TPonto cpp ar q libTPonto a e87 TCirculo o e87 TElipse o e87 TPonto o ranlib libTPonto a 7 4 Criando uma biblioteca est tica com o libtool Veja a seguir como usar o libtool para gerar a biblioteca est tica Apostila de Programa o Para Linux Unix www Impt ufsc br Eng Andr Duarte Bueno CAP TULO 7 LIBTOOL 57 Exemplo libtool g o libTPonto a e87 TPonto cpp e87 TElipse cpp e87 TCirculo cpp Veja a seguir a sa da gerada pelo libtool mkdir libs ar cru libTPonto a ranlib libTPonto a 7 5 Criando uma biblioteca din mica com o libtool O mesmo exemplo usando o libtool e biblioteca din mica Observe que a nica altera o o nome da biblioteca que agora se chama libTPonto la Exemplo libtool g o libTPonto la e87 TPonto cpp e87 TElipse cpp e87 TCirculo cpp Veja a seguir a sa da gerada pelo libtool rm fr libs libTPonto la libs libTPonto libs libTPonto ar cru libs libTPonto al ranlib libs libTPonto al creating libTPonto la cd libs amp amp rm f libTPonto la amp amp In s libTPonto la libTPonto 1la 7 6 Linkando execut veis Formato u

Download Pdf Manuals

image

Related Search

Related Contents

Bryan Boilers CLM-150-S150-GI User's Manual  Williams Sound WIRTX900 User's Manual  Bedienungsanleitung de Operating instructions en Mode d  T'nB TSED100RD mouse pad  ユーザのリスク認知に対する製品警告の明示性・可能性情報の影響  Anleitung COMPACT - Serie SBC  JVC KD-SX650 CD Player  

Copyright © All rights reserved.
Failed to retrieve file