Schneller Kompillieren (Cortex mit GNU C-Compiller)

Gast #1005573
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.
Make sollte aber eigentlich von alleine raffen, dass nur ein Delta 
übersetzt werden muss.

Es sei denn, du hast die Targets mit diesem .PHONY Schlüsselwort 
gekennzeichnet. Das sagt make, dass es immer ausgeführt werden soll.

Schonmal auf der Kommandozeile probiert?
Gast
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.
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)
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.