Tarefa
4o Exercício Programa: Cartões Marmitex
Condições de conclusão
Aberto: quarta-feira, 10 out. 2007, 09:00
Vencimento: sábado, 3 nov. 2007, 23:55
Enunciado do programa em PDF.
Arquivos de testes com extensão .list e os arquivos
monolitico.c
leitura.c
leitura.h
cartao.c
cartao.h
Makefile
você encontra nesse diretório. O arquivo todos.tgz possui todos
os arquivos compactos. Para descompactar, basta colocar o arquivo
todos.tgz no diretório onde você deseja expandir os arquivos e dar
o comando:
tar -xzf todos.tgz
Ultima atualizacao: 23:00h de 10/10. Os arquivos cartao.h e cartao.c foram atualizados, e colocamos o executavel Linux para esclarecer suas duvidas com relacao ao funcionamento do programa.
Para trabalhar com múltiplos arquivos em Linux, é bom você utilizar um Makefile.
Linhas 1, 4, 7, 10 e 13 fornecem informações de dependência. Em uma linha de dependência o nome de um target files aparece primeiro, seguido por dois pontos (`:'). Depois dos dois pontos segue-se uma lista (possivelmente vazia) de arquivos dos quais o target depende. A Linha 7, por exemplo, diz que o target file fila.o depende dos arquivos fila.c, minhasdefs.h e fila.h. Uma linha de dependência é seguida por uma ou mais linhas com comandos (rebuild comandos) que criam ou atualizam o target file especificado na linha de dependência. O primeiro caractere de um linha contendo um comando deve ser um TAB (`\t'); uma, aparentemente idêntica, seqüência de espaços não pode ser usada no lugar do TAB. Linhas 2, 5, 8, 11 e 14 contém comandos. A Linha 8, por exemplo, diz que o comando
As linhas em branco (linhas 3, 6, 9 e 12) são ignoradas. Estas linhas podem estar presente apenas para facilitar a legibilidade do MakeFile, mas elas não são necessárias. Para saber mais, você pode consultar o tutorial de Makefile da UFRJ.
Arquivos de testes com extensão .list e os arquivos
monolitico.c
leitura.c
leitura.h
cartao.c
cartao.h
Makefile
você encontra nesse diretório. O arquivo todos.tgz possui todos
os arquivos compactos. Para descompactar, basta colocar o arquivo
todos.tgz no diretório onde você deseja expandir os arquivos e dar
o comando:
tar -xzf todos.tgz
Ultima atualizacao: 23:00h de 10/10. Os arquivos cartao.h e cartao.c foram atualizados, e colocamos o executavel Linux para esclarecer suas duvidas com relacao ao funcionamento do programa.
Para trabalhar com múltiplos arquivos em Linux, é bom você utilizar um Makefile.
Formato de um Makefile (adaptado das notas de aula do Prof. Coelho)
Um MakeFile consiste de uma seqüência de `regras' com o seguinte formato:<target> : <dependências> <comando1> <comando2> ...
Um target é usualmente o nome de um arquivo que é gerado por um programa; exemplos de targets são arquivos executáveis (bin ou .o). Um target também pode ser o nome de uma ação, tal como `clean'.
Uma dependência é um arquivo que é usado para criar o target. Um target pode depender de vários arquivos.
Um comando é uma ação que Make pode mandar que seja executada. Um regra pode ter mais que um comando, cada um em uma linha. Nota: deve existir um caractere TAB ('\t') no início de cada linha.
Exemplo de um MakeFile
A seguir está um exemplo típico de um arquivo Makefile (os números das linhas foram colocada apenas para efeito de referência, eles não fazem parte do MakeFile):
1 meuprog: meuprog.o fila.o etc.o 2 gcc meuprog.o fila.o etc.o -o meuprog 3 4 meuprog.o: meuprog.c minhasdefs.h fila.h etc.h 5 gcc -c meuprog.c 6 7 fila.o: fila.c minhasdefs.h fila.h 8 gcc -c fila.c 9 10 etc.o: etc.c minhasdefs.h etc.h 11 gcc -c etc.c 12 13 clean: 14 rm -f meuprog.o fila.o etc.oEste exemplo ilustra o formato de um arquivo MakeFile.
meu_prompt> gcc -c fila.c
deverá ser executado para reconstruir o target fila.o a partir dos arquivos fila.c, minhasdefs.h e fila.h. Neste particular Makefile, cada linha de dependência é seguida por apenas uma linha de comando.