Schneller Kompillieren (Cortex mit GNU C-Compiller)

Gast #1005573
Lesenswert?

Hallo,

In meinem Projekt (Eclipse / GCC) habe ich viele C-Dateien. Die 
Make-Datei habe ich selbst zusammengstrickt.

Wenn ich unter Eclipse auf "Übersetzen" drücke, dann werden alle 
C-Sourcen neu übersetzt, auch die, die nicht geändert wurden.

Wie kann ich das im Make-File abstellen?
Oder gibt es einen Compiller-Schalter für den GCC der erkennt, dass die 
.o Datei neuer ist als die .c Datei?

Das würde mir viel wartezeit ersparen...

Danke für eure Antwort.
Gast #1007299
Lesenswert?

Vielen Dank für eure Antworten.

Ich habe da folgende Zeile drin:
1
.PHONY : all begin finish end sizebefore sizeafter gccversion build elf hex bin sym clean clean_list program

Auch wenn ich diese auskommentiere, dann bringt es keine Besserung.

Die .o Datei lasse ich an ein anderes Verzeichnis ausgeben, damit das 
src Verzeichnis nicht so voll wird. Kann es daran liegen?

Gibt es nicht ein Compillerschalter für den GCC?
Also make kennt ja nicht die Zusammenhänge, erst der GCC liest die .c 
Datei und sieht dann ob sich eventuell eine eingebundene Header Datei 
geändert hat, wenn ja, dann neu kompillieren.
#1007315
Lesenswert?

Markus wrote:
> Die .o Datei lasse ich an ein anderes Verzeichnis ausgeben, damit das
> src Verzeichnis nicht so voll wird. Kann es daran liegen?

ist das verzeichnis in den VPATH ?

> Gibt es nicht ein Compillerschalter für den GCC?
> Also make kennt ja nicht die Zusammenhänge, erst der GCC liest die .c
> Datei und sieht dann ob sich eventuell eine eingebundene Header Datei
> geändert hat, wenn ja, dann neu kompilieren.

das ist eigentlich die aufgabe von make, die zusamenhänge zwischen *.c 
und *.h dateien muss man make explizit mitteilen (man kann das 
automatisch machen lassen, aber ein problem nach den anderen)
#1007397
Lesenswert?

Hallo,

ich geb dir mal ein Beispiel.

CC=gcc
CFLAGS=-DHAVE_CONFIG_H -g -O2 -Wall -Wundef -Wshadow
LIBS=

OBJS=lm.o lib.o interface.o misc.o parser.o cmd_op.o cmd_conf.o

SRCS=$(OBJS:.o=.c)

all: lm

lm: .depend TAGS $(OBJS)
        $(CC) -g -o $@ $(OBJS)

clean:
        rm -f *~  core tags TAGS lm $(OBJS)
        rm -f .depend

TAGS: $(OBJS)
        etags *.c *.h
        ctags *.c *.h

dep depend .depend:
        gcc -M $(CFLAGS) $(SRCS) > .depend

-include .depend

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren