Programação de Sistemas



Documentos relacionados
A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão

Desenvolvimento de Software para UNIX

Instalação do software cygwin

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

1 Code::Blocks Criação de projetos

Figura 1 - O computador

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

2 Configuração do Ambiente de Desenvolvimento

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Tutorial: Programando no Linux

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Programação por Objectos

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Especificação do 3º Trabalho

Usando o Excel ESTATÍSTICA. A Janela do Excel Barra de título. Barra de menus. Barra de ferramentas padrão e de formatação.

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

Conceitos Básicos sobre Programação Prática

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

GP Gestão de Pessoal. Gerador de Arquivos e Relatórios

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Guia rápido do utilizador

Manual do PDFCreator Versão 1

Microsoft Office Excel 2007

Microsoft Access: Criar relatórios para um novo banco de dados. Vitor Valerio de Souza Campos

Guia Rápido do Contacts

Anexar ficheiros no exe (versão 1.0x)

Os elementos básicos do Word

ZSRest e ZSPos Multiposto

Planificação Anual da disciplina de TIC 9ºANO

1/16 MAKEFILES Makefiles Programação II

Capítulo 5. Tratamento de excepções

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

MANUAL DE INTEGRAÇÃO DE SOFTWARE

Lazarus pelo SVN Linux/Windows

Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico

MOODLE: actividade LIÇÃO

Tarefa Orientada 6 Edição de Dados

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

Exemplo de aplicação Car Parking 1in1out

Partilha online 1.1. Nokia N76-1

O Processo de Programação

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Google Sites. A g r u p a m e n t o C a m p o A b e r t o /

P.V. Descrição Ocorrências Linhas

Capítulo 7. Sequenciamento das Tarefas

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

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

Desenvolvimento de Sistema de Software

Banco de Dados Microsoft Access: Criar tabelas

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Tarefa Orientada 2 Criar uma base de dados

Introdução à Linguagem

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

Introdução aos cálculos de datas

Sumário. Introdução ao Universo Linux Parte I

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

Índice. Excel Básico e Intermédio. Parte 1

O Primeiro Programa em Visual Studio.net

Makefiles O que é mak a efi f le make

AULA 4 Sistemas Operacionais

2ºCiclo (5º e 6º Anos de escolaridade) 3ºCiclo (7º e 8º Anos de escolaridade)

MANUAL DE CONSULTA RÁPIDA DO MODEM OPTIONS FOR NOKIA Copyright 2002 Nokia. Todos os direitos reservados Issue 2

ACRONIS BACKUP AND RECOVERY 10 SERVER FOR LINUX


Referencial do Módulo B

Utilizar o Microsoft Offi ce OneNote 2003: Iniciação rápida

Sistema de Consulta ECD1200

Engenharia de Software. Enunciado da Quarta Parte do Projecto

Introdução : 1. Temas Abordados no Livro 1. Novidades no Excel Explorando o ExceI O Microsoft Excel 3

Arquimedes e Controle de Obra

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

GlobalPhone - Central Telefónica. Manual do Portal de Selfcare Utilizador

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

Domine o Word Professor: Rafael Henriques. Ano Lectivo 2010/2011

CET GRSI Sistema Operativo de Rede. António Paulo Santos

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

1. PROLOGO ==========

Engenharia de Software. Enunciado da Primeira Parte do Projecto

BEMVINDO AO ONLINE SHIPPING MANUAL

Guia e Utilização do Visual Studio 6.0

Prof. Sandrina Correia

RC1 4ª ficha de avaliação

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Download. Instalaça o. Geral

Pesquisa e organização de informação

4.1. UML Diagramas de casos de uso

MANUAL DE PROCEDIMENTOS

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Transcrição:

Programação de Sistemas Make reconstrução de aplicações Programação de Sistemas Make : 1/17 Objectivos Nos projectos de desenvolvimento de software são frequentes as ligações de derivação entre produtos. Exemplo: na fase de codificação existe dependência hierárquica entre programas fonte e executáveis. Ligação de derivação entre produtos implica ordenação temporal entre as datas de criação dos produtos (ex: os programas devem ser compilados depois de editados e a edição de ligações ( link ) deve ser feita em data posterior à compilação. Programação de Sistemas Make : 2/17

Formato makefile O make gera um programa coerente, executando apenas os comandos necessários sobre os ficheiros alterados. Os ficheiros envolvidos e as regras de construção são indicados no ficheiro makefile (ou Makefile). (nome-fich-alvo)+ : (nome-fich-dependentes)* \n ( \t comando-unix \n )* linha-terminação A primeira regra de construção deve gerar o ficheiro final (programa). Linha de terminação do comando iniciada por quaisquer caracteres diferentes de \t e # (usualmente uma linha em branco). Comentários iniciados # até ao fim da linha. Comando, ou lista dos ficheiros dependentes, continua na linha seguinte se na última coluna for colocado \. Programação de Sistemas Make : 3/17 Reconstrução das dependências (1) Comando make reconstrói, em profundidade ( depthfirst ) o ficheiro alvo. 1. A pesquisa da coerência temporal feita da esquerda para a direita, na lista de ficheiros dependentes. Se a lista for vazia (ex: usual na regra clean ), o make assume que a dependência é incoerente. 2. Se um ficheiro dependente for gerado a partir de outro (ex: fich.o gerado a partir de fich.c) a pesquisa da coerência temporal é suspensa e a reconstrução prossegue descendo na árvore de dependências. Se algum ficheiro dependente tiver data posterior ao ficheiro alvo, a ferramenta executa os comandos indicados nas linhas seguintes até à linha de terminação. Programação de Sistemas Make : 4/17

Reconstrução das dependências (2) Por omissão, o alvo reconstruído é o primeiro indicado na lista de regras. Se for necessário reconstruir outro alvo, ele deve ser indicado na linha de comando. Exemplo: # outros alvos clean: rm prg *.o # limpeza de ficheiros inúteis desencadeada por comando make clean Programação de Sistemas Make : 5/17 Reconstrução das dependências (3) Seja o seguinte ficheiro makefile prg: aux.o main.o gcc -o prg aux.o main.o prg aux.o: aux.c defs.h gcc -c aux.c aux.o main.o main.o: main.c gcc -c main.c clean: rm prg *.o aux.c defs.h main.c Árvore de dependências Programação de Sistemas Make : 6/17

Reconstrução das dependências (4) Consideremos as seguintes datas de última modificação: main.c@10:00, main.o@10:40 aux.c@10:20, aux.o@10:25 defs.h@14:00 prg@10:45 e o Make ser executado às 18:00 1. Verificação da dependência temporal entre prg e aux.o é suspensa. A. defs.h é posterior a aux.o: aux.c é compilado e aux.o passa a ter como data de última modificação as 18:00 Programação de Sistemas Make : 7/17 Reconstrução das dependências (5) 2. Verificação da dependência temporal entre prg e main.o é suspensa. A. main.c é anterior a main.o: logo, não há alterações. 3. Retomada a verificação da dependência temporal entre prg e aux.o, que agora não é satisfeita: logo, a edição de ligações é executada. Programação de Sistemas Make : 8/17

Macros (1) [Def] Uma macro é uma directiva de substituição. Existem dois tipos de macros, estáticos e dinâmicos. 1. Estáticas: macros válidas em todo o ficheiro makefile Exemplo: Declaração: Uso: ID=texto $(ID) CC=gcc # para alterar compilador, basta modificar macro CFLAGS=-Wall -ansi - pedantic main.o: main.c $(CC) $(CFLAGS) -c main.c Programação de Sistemas Make : 9/17 Macros (2) A definição de uma macro dentro do ficheiro makefile perde prioridade sobre a linha de comando. Exemplo: CC=gcc CFLAGS=-Wall -ansi - pedantic asterix.ist.utl.pt> make CC=lcc # o compilador usado passa a ser olcc, não ogcc Programação de Sistemas Make : 10/17

Macros (3) 2. Dinâmicas: adaptados em cada regra, usando a extensão do ficheiro para indicar o tipo. $@ id do ficheiro alvo $? Dependências com data posterior à do alvo $< id do ficheiro dependente $* id do ficheiro alvo, retirando extensão $% membro de uma biblioteca Exemplo de regra implícita:.c.o: $(CC) $(CFLAGS) -c $< Nota: regras implícitas pré-definidas podem ser listadas usando a opção make -p Programação de Sistemas Make : 11/17 Macros (4) prg: aux.o main.o $(CC) -o prg aux.o main.o aux.o: aux.c defs.h # todas as dependências de aux.o indicadas, porque a regra # implícita apenas aceita ligações um-para-um. # A reconstrução segue regra implícita. # reconstrução de main.c usa regra implícita clean: rm prg *.o Programação de Sistemas Make : 12/17

Macros (5) Ao ser lançado, o make começa por ler um ficheiro de regras implícitas pré-definidas (ex: regras.c.o) Se o makefile incluir regras implícita com novo sufixo, indicar pela regra.suffixes Exemplo:.SUFFIXES:.pdf.tex.pdf: latex $< dvipdf $*.dvi $@ # latex gera ficheiro.dvi all: Lab2.pdf Lab3.pdf Lab4.pdf \ Lab5.pdf Lab6.pdf Programação de Sistemas Make : 13/17 Localização de ficheiros (1) Comando vpath %.ext DIR identifica directoria onde residem ficheiros de extensãoext vpath %.c src/ vpath %.o obj/ vpath %.h include/.c.o: $(CC) $(CFLAGS) -c -I include/ -o obj/$@ $< target: f1.o $(CC) -o obj/f1.o Nota: necessário indicar directorias na linha de comando f1.o: f1.c defs.h Conteúdo da variáveis de ambiente do Shell (PATH, HOME, ) pode ser acedido dentro do Make, quer nas dependências, quer nas linhas de comando, na forma $(ID). Programação de Sistemas Make : 14/17

Localização de ficheiros (2) Explicação detalhada da regra implícita.c.o: $(CC) $(CFLAGS) -c -I include/ -o obj/$@ $< Se necessitar um ficheiro de extensão.o, e se esse ficheiro não existir no directório, procura no directório o ficheiro fonte de extensão.c. Se esse ficheiro existir, a reconstrução é feita com $(CC): comando a executar, indicado na macro CC (normalmente tem-se CC=gcc) $(CFLAGS): bandeiras do compilador. Por exemplo se se tiver CFLAGS= não inclui directivas de compilação -c: apenas gera o ficheiro objecto (não evoca a edição de ligações) -I include/: deve procurar todos os ficheiros #define de utlizador (indicados entre aspas, como #define "defs.h") no directório include/ -o obj/$@: o identificador do ficheiro resultado da compilação é dado pelo ficheiro alvo (determinado na linha das dependências) e inserido no directório obj/ $<: ficheiro a compilar Programação de Sistemas Make : 15/17 Opções (1) -C dir altera directório corrente (em alternativa, --directory=dir) -f fich redirecciona makefile (em alternativa,--file=fich) -I dir altera directório de pesquisa dos cabeçalhos (em alternativa,--include-dir=dir) -s modo silencioso (em alternativa,--silent) Programação de Sistemas Make : 16/17

Opções (2) Exemplo: gerador de programa para sistemas operativos distintos echo: echo make (DOS LINUX) DOS: make -C src -f Makefile.dos LINUX: make -C src -f Makefile.lnx Programação de Sistemas Make : 17/17