Desenvolvimento de Software para UNIX

Documentos relacionados
Aula 4: Montagem e Disponibilização Frameworks Genéricos

Empacotamento de Software no Debian

Programação de Sistemas

Paradigmas de Programação II Departamento de Informática Universidade do Minho LESI 1 o Ano MCC 2002/2003

Lazarus pelo SVN Linux/Windows

O nome ANT é uma sigla para another neat tool (mais uma ferramenta organizada), segundo seu autor James Duncan Davidson.

Editor Eclipse para Programas F

Desenvolvendo Websites com PHP

02 - Usando o SiteMaster - Informações importantes

Construção Páginas de Internet

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

Manual comandos Básicos para instalar e desinstalar Firebird em Sistema operacional Linux

ZS Rest. Manual Profissional. Instalação do Software. v2011

Instalação e utilização do Eclipse / Fortran em Windows

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Gerenciamento de Pacotes

Tutorial: Programando no Linux

Entendendo como funciona o NAT

WEBSITE DEFIR PRO

Primeiros passos das Planilhas de Obra v2.6

Programação WEB. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Salvando modificações localmente (commit) Enviando modificações para o servidor (push) Sinalizando versão estável (tag)

Instalação do software cygwin

Sugestão de criação de eventos de baixa clientes que não utilizavam eventos

Solutions for Information Technologies. BIS-Navegador. Oracle

MANUAL COMO CRIAR UM PROJETO

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Sumário. Parte I Filosofia e Modelagem Orientada a Objetos... 23

Manual Upgrade para a Versão 6

O Primeiro Programa em Visual Studio.net

MicroMIX Comércio e Serviços de Informática, Lda.

PHC Serviços CS. A gestão de processos de prestação de serviços

Manual do Plone (novo portal do IFCE)

Tarefa 18: Criar Tabelas Dinâmicas a partir de Listas de Excel

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Como Instalar Programas no GNU/Linux. Elexsandro Rangel dos Santos

Manual de Utilização. Site Manager. Tecnologia ao serviço do Mundo Rural

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

Universidade de São Paulo ICMC Departamento de Ciências da Computação

Documentação Symom. Agente de Monitoração na Plataforma Windows

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Acronis Servidor de Licença. Manual do Utilizador

Ferramentas para desenvolvimento de Software Livre

PROGRAMAÇÃO LINEAR. Resolução de problemas de programação linear usando o comando Solver, no Excel.

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

EIC. Projecto I. Manual do Utilizador. Vídeo Vigilância Abordagem Open Source. Curso: Engenharia de Informática e Comunicações Ano Lectivo: 2005/2006

Instalação rápida do Expresso

MANUAL DE CONFIGURAÇÃO DO BACKUP

Procedimento para Configurar a Importação/Exportação de Arquivos Texto

O Manual do Konquest. Nicholas Robbins Tradução: José Pires

Procedimento para Configurar a Importação/Exportação de Arquivos Texto

Manual de Instalação v7.60. PRIMAVERA Business Software Solutions (última atualização em ) (última actualização em

Como Internacionalizar Scripts Bash

Este tutorial está publicado originalmente em

Exemplo de aplicação Car Parking 1in1out

12 EXCEL MACROS E APLICAÇÕES

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS COTAS DE DISCO. Professor Carlos Muniz

Sistema Operacional Unidade 8.2 Instalação de aplicativos. QI ESCOLAS E FACULDADES Curso Técnico em Informática

INSTALANDO SOFTWARE Ifox irestaurantes

CRIAÇÃO DE RELATÓRIOS EM DELPHI

Engenharia de Software Sistemas Distribuídos

Orientação a Objetos

BACKUP E RESTORE BACKUP (NO MOODLE DO ANO PASSADO)

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Solutions for Information Technologies. BIS-Navegador. IBM DB2 UDB v8.x

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

Software Adobe DreamWeaver. Requisitos para criar aplicações Web

Tutorial: Aprenda a criar seu próprio makefile. Darcamo (Forúns Ubuntu)

MANUAL INSTALAÇÃO GESPOS WINDOWS

Nota de Aula: Utilização da IDE Code::Blocks

Solutions for Information Technologies. BIS-Navegador. Manual de Instalação para Microsoft SQL Server

"Manual de Acesso ao Moodle - Discente" 2014

Laboratório de Automação e Robótica (LAR)

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Table of Contents. PowerPoint XP

Como converter arquivos automaticamente

Pesquisa e organização de informação

ACRONIS BACKUP AND RECOVERY 10 SERVER FOR LINUX

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

2 Configuração do Ambiente de Desenvolvimento

SECUNDÁRIA DE CAMARATE Plataforma Office 365. Alojamento de ficheiros - OneDrive para Empresas

Sumário. Computação Gráfica Illustrator

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

Driver Eticadata Versão 1.0 de Português

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções.

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Gerenciamento e Captura de Cheques - Sistec. Manual de Instalação e Importação ÍNDICE 1.INSTALAÇÃO Instalando o programa

TUTORIAL III: ADICIONANDO AJUDA. Adicionando Ajuda

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Transcrição:

Desenvolvimento de Software para UNIX Rui Carlos A. Gonçalves 29 de Agosto de 2008 Resumo Neste texto pretende-se descrever formas de desenvolver programas para UNIX usando as ferramentas da GNU. Não é, no entanto, objectivo deste texto ensinar a programar, mas sim ensinar a criar, a partir do ficheiro que contêm o código do programa, um arquivo de fácil instalação em qualquer plataforma UNIX. Conteúdo 1 Introdução 1 2 Makefile.am 2 3 Autoscan (configure.ac) 3 4 Aclocal 3 5 Autoheader 4 6 Automake 4 7 Autoconf 4 8 Exemplo 4 8.1 Descrição do projecto.............................. 4 8.2 Ficheiros Makefile.am............................. 5 8.3 Ficheiro configure.ac............................. 5 8.4 Script configure................................ 7 1 Introdução Quando desenvolvemos um programa em C/C++ habitualmente criamos uma makefile, que nos permite automatizar a criação do executável final. Mas uma makefile pode não 1

funcionar correctamente em todos os sistemas UNIX, devido a pequenas diferenças entre as várias versões existentes, nomeadamente no nome do compilador de C/C++. A forma normalmente utilizada para ultrapassar este problema passa por, em vez de uma makefile, usarmos uma script (configure) que gera a makefile adaptada ao sistema. Ao longo deste texto serão descritos os passos para a criação dessa script. De referir que este texto é apenas uma breve introdução ao assunto em causa e, como tal, serão indicados os passos a dar para pequenos projectos em que apenas se pretende criar um executável. 2 Makefile.am O primeiro passo consiste em criar o(s) ficheiro(s) Makefile.am. Nestes ficheiros são indicados os directórios que fazem parte do projecto, os programas a serem compilados, as bibliotecas a serem criadas, etc. Quando o nosso projecto tem apenas um directório só precisamos de criar um ficheiro. Supondo que o nosso executável final se vai chamar prog-3.1, e que necessita dos ficheiros file1.c, file2.c e file3.c, deverão ser incluidas no ficheiro as seguintes linhas: bin_programs = prog-3.1 prog_3_1_sources = file1.c file2.c file3.c Na primeira linha, através da macro bin PROGRAMS indicamos o nome do executável. Na segunda, através da macro SOURCES, indicamos os ficheiros necessários à criação do executável prog-3.1. De notar que, no nome do executável que aparece antes da macro, os caracteres - e. foram substituídos pelo carácter. Podemos também criar bibliotecas estáticas ou dinâmicas, no entanto, dada a complexidade associada à construção de bibliotecas dinâmicas, este tópico não será abordado neste texto. Vejamos então como criar uma biblioteca estática. Em primeiro lugar indicamos quais as bibliotecas a serem criadas através da macro noinst LIBRARIES. Depois indicamos quais os ficheiros que serão utilizados por cada uma das bibliotecas indicadas anteriormente, através da macro SOURCES. Para indicarmos que um programa usa uma biblioteca utilizamos a macro LDADD. Ou seja, pegando no exemplo apresentado anteriormente, assumindo que também necessita das bibliotecas libx.a e liby.a, o ficheiro Makefile.am ficaria assim: noinst_libraries = libx.a liby.a libx_a_sources =... liby_a_sources =... bin_programs = prog-3.1 prog_3_1_sources = file1.c file2.c file3.c prog_3_1_ldadd = libx.a liby.a 2

Quando queremos construir bibliotecas é necessário adicionar a macro AC PROG RANLIB ao ficheiro configure.ac (ver secção 3). Se o nosso projecto for constituído por vários directórios temos que criar um ficheiro Makefile.am em cada directório. No ficheiro do directório de topo temos que indicar quais os subdirectórios do nosso projecto. Isso é feito através da macro SUBDIRS. Por vezes podemos ter necessidade de executar operações adicionais, por exemplo, criar um directório durante a instalação, remover certos ficheiro quando fazemos um clean, etc. No entanto não é possível acrescentar dependências aos alvos criados pelo automake sem definir toda a regra, então como podemos resolver este tipo de problemas? Vários alvos suporta uma versão -local, que podemos criar no Makefile.am. Este alvo é executado em conjunto com o que lhe dá origem. Por exemplo, caso queira que durante a instalação seja criada a pasta /xpto e que a mesma seja removida quando o programa for desinstalado, basta acrescentar as seguintes linhas ao ficheiro Makefile.am: install-data-local : mkdir /xpto uninstall-local : rm -r /xpto 3 Autoscan (configure.ac) O autoscan é uma aplicação que percorre os directórios do projecto e gera um ficheiro configure.scan, que servirá de base para o ficheiro configure.ac 1. Depois de executar este comando editamos o ficheiro configure.scan, corrigindo as informações associadas à macro AC INIT e adicionando na linha seguinte a macro AM INIT AUTOMAKE. Tal como referido anteriormente, quando são construídas bibliotecas, é necessário incluir também a macro AC PROG RANLIB. Por fim, alteramos o nome do ficheiro para configure.ac. 4 Aclocal Cria o arquivo aclocal.m4. Começa por pesquisar os ficheiros.m4 encontrados e depois percorre o ficheiro configure.ac, copiando as macros encontradas para o ficheiro aclocal.m4. 1 Inicialmente este ficheiro chamava-se configure.in; embora, por questões de compatibilidade, esta denominação ainda seja aceite devemos usar configure.ac 3

5 Autoheader O autoheader percorre o ficheiro configure.ac para depois criar o ficheiro config.h.in, usado pela script configure. A partir deste será criado o ficheiro config.h, que será usado na compilação dos programas. 6 Automake O automake gera um ficheiro Makefile.in a partir de cada Makefile.am. Os ficheiros criados serão usados pela script configure para a criação das makefile s. Por default 2 verifica a existência de certos arquivos padrão da GNU (INSTALL, NEWS, README, AUTHORS, ChangeLog e um dos seguintes: COPYING.LIB, COPYING.LESSER ou COPYING). Para desactivar esta verificação devemos usar a opção --foreign. Podem ainda ser necessários outros ficheiros, que podem ser criados pelo automake. Para tal devemos usar a opção -a. Se só utilizarmos está opção serão apenas criados links para os ficheiros (que estão no directório do Automake). Para que os ficheiros sejam efectivamente copiados é necessário usar a opção -c (juntamente com a opção -a). 7 Autoconf Por fim o autoconf gera a script configure. Esta script permite criar uma makefileadaptada ao sistema em causa e onde podemos especificar opções de compilação, directórios de instalação, compilador a ser usado, etc. 8 Exemplo Nesta secção será apresentado um exemplo para um programa concreto. A construção do exemplo foi feita usando o sistema operativo Mac OS X 10.4.5 (Tiger), o automake 1.9 e o autoconf 2.59. 8.1 Descrição do projecto Vamos construir o programa prog a partir dos ficheiros main.c e array.c e das bibliotecas (estáticas) libio.a e libutil.a. Por sua vez a biblioteca libio.a é obtida a partir de read.c e print.c e a biblioteca libutil.a a partir de data.c e sort.c. Na figura 1 é apresentada a árvore que representa o projecto. Os ficheiros com o código encontram-se no subdirectório src. 2 A opção de verificação default é --gnu; para além desta existem ainda as opções --foreign, --gnits e --cygnus 4

prog main.c array.c libio.a libutil.a print.c read.c data.c sort.c Figura 1: Árvore do projecto. 8.2 Ficheiros Makefile.am Vamos precisar de dois ficheiros: um no directório de topo e outro em src../makefile.am SUBDIRS = src./src/makefile.am noinst_libraries = libio.a libutil.a libio_a_sources = read.c print.c libutil_a_sources = data.c sort.c bin_programs = prog prog_sources = main.c array.c prog_ldadd = libio.a libread.a 8.3 Ficheiro configure.ac Para obter este ficheiro começamos por executar o comando autoscan. Este programa gerou o ficheiro configure.scan com o seguinte conteúdo: 1 # -*- Autoconf -*- 2 # Process this file with autoconf to produce a configure script. 3 4 AC_PREREQ(2.59) 5 AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) 6 AC_CONFIG_SRCDIR([src/array.c]) 5

7 AC_CONFIG_HEADER([config.h]) 8 9 # Checks for programs. 10 AC_PROG_CC 11 12 # Checks for libraries. 13 14 # Checks for header files. 15 16 # Checks for typedefs, structures, and compiler characteristics. 17 18 # Checks for library functions. 19 20 AC_CONFIG_FILES([Makefile 21 src/makefile]) 22 AC_OUTPUT De seguida fazemos as seguintes alterações ao ficheiro: Actualizamos a linha 5, colocando lá as informações do nosso projecto; Alteramos a linha 6 para AC CONFIG SRCDIR([src/main.c]) Depois da linha 5 adicionamos a linha AM INIT AUTOMAKE; Depois da linha 10 adicionamos a linha AC PROG RANLIB (necessário pois vamos criar bibliotecas); No final obtemos o seguinte ficheiro: 1 # -*- Autoconf -*- 2 # Process this file with autoconf to produce a configure script. 3 4 AC_PREREQ(2.59) 5 AC_INIT(main, 1.1, email@email.pt) 6 AM_INIT_AUTOMAKE 7 AC_CONFIG_SRCDIR([src/main.c]) 8 AC_CONFIG_HEADER([config.h]) 9 10 # Checks for programs. 11 AC_PROG_CC 12 AC_PROG_RANLIB 13 14 # Checks for libraries. 6

15 16 # Checks for header files. 17 18 # Checks for typedefs, structures, and compiler characteristics. 19 20 # Checks for library functions. 21 22 AC_CONFIG_FILES([Makefile 23 src/makefile]) 24 AC_OUTPUT Alteramos então o nome do ficheiro para configure.ac. 8.4 Script configure Agora é só executar os seguintes comandos: aclocal autoheader automake -a -c --foreign autoconf Podemos ainda executar o comando automake -a -c. O único efeito que este comando terá, será copiar para o directório do projecto os ficheiros INSTALL e COPYING. O ficheiro INSTALL é particularmente importante pois contém indicações de como instalar o programa. No final já temos a script configure, a partir da qual podemos gerar a makefileque permite, entre outras coisas, compilar e instalar o programa. Agora para instalar o programa é só executar os comandos:./configure make make install 7