mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schneller Kompillieren (Cortex mit GNU C-Compiller)


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Robert Weber (rweber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
make ist das tool deiner Wahl.

Siehe: http://www.gnu.org/software/make/manual/make.html

Autor: Andreas G. (andy1988)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an wie das Makefile aussieht. Wenn da z.B. "gcc *.c" steht, 
dann kann make auch nichts machen. Also am besten mal die Doku lesen 
oder ein paar Beispiele anschauen wie man's richtig macht.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für eure Antworten.

Ich habe da folgende Zeile drin:
.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.

Autor: Gerard Choinka (gerardchoinka)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Robert Weber (rweber)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.