Você está na página 1de 8

SISTEMAS

OPERATIVOS
PRÁTICAS
AULA 3

Daniel Silveira / João Pavia


30/9/2022 2

SISTEMAS OPERATIVOS

HEADER E
SOURCE FILES
HEADER FILE SISTEMAS OPERATIVOS

• O ficheiro header informa o qual é o conteúdo do ficheiro


source, de uma forma curta e simples. Assim o user pode
saber o que milhares de linhas do source estao a fazer sem
ter a necessidade de ler tudo.
• O ficheiro header contem a declaração de:
• Outros ficheiros header usados pelo source
• Funções feitas no ficheiro source
• Variáveis globais usadas
• Macros
• Outros elementos que queiram partilhar

9/3/20XX 3
HEADER E SOURCE
SISTEMAS OPERATIVOS

Source file carro.c Header file carro.h

#include “carro.h” #include <stdio.h>


int liga_motor ()
// indica se motor ta ligado
{ …}
int global_motor_ligado;

int acende_luzes (int tipo_luz) // descrição da função…


{…} int liga_motor ();

// descrição da função…
int acende_luzes (int tipo_luz);

9/3/20XX 4
5

motorgrafico.c motorgrafico.h

main.c
SISTEMAS OPERATIVOS

Para usar motorgrafico


main.c faz include motorgrafico.h

gcc main.c motorgrafico.c –o jogo


30/9/2022 6

MAKEFILES
SISTEMAS OPERATIVOS

PORQUÊ?
7

motorgrafico.c motorgrafico.h

Nivel1.h Nivel2.h Nivel3.h 3D.h rendering.h

Nivel1.c Nivel2.c Nivel3.c 3D.c rendering.c


SISTEMAS OPERATIVOS

main.c

Se compilar primeiro motorgrafico.c, vai dar erro!


Porque ele não conhece as funções 3D e rendering que quer usar
Existem dependências, precisamos compilar 3D e rendering primeiro
CC = gcc
CC indica qual o compilador
CFLAGS = -g – Wall
CFLAGS indica as flags de compilação

SISTEMAS OPERATIVOS
all: jogo Para criar “jogo” é preciso primeiro fazer build
“motorgrafico” e “niveis”
jogo: motorgrafico níveis

$(CC) $(CFLAGS) –o jogo main.o motorgrafico.o níveis.o Quando fazemos build principal “linkamos”
os objectos todos e criamos o executável

motorgrafico: Rendering3D
Para criar “motorgrafico” é preciso primeiro
$(CC) $(CFLAGS) –c motorgrafico.c
fazer build “Rendering3D”

rendering3D: Cada build com a flag –c não faz linkagem,


$(CC) $(CFLAGS) –c rendering.c 3d.c gera um ficheiro binário chamado objecto

Se fizer “make all”, nao apago os ficheiros


niveis:
e compila todos os ficheiros sem objectos.
$(CC) $(CFLAGS) –c niveis*.c

Se fizer “make clean”, apagos os ficheiros


clean: objeto todos.
8
$(RM) *.o

Você também pode gostar