• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

make Frage

Hallo,

also ich steh gerade aufm Schlauch...also folgende Situation:

Verzeichnis1 hat folgende 2 Dateien_
- aaa.c
- aaa.h

In einem Unterverzeichnis U1 liegen weitere 2 Dateien:
- bbb.c
- bbb.h

In bbb.c ist eine Funktion Fopen die ich in aaa.c verwenden möchte. Ich schreibe in aaa.c:
#include "U1/bbb.h"

Das makefile dazu sieht so aus
Code:
CC = gcc
CFLAGS = -c

aaa: aaa.o
	$(CC) -o $@ aaa.o

.c.o:
	$(CC) $(CFLAGS) $<

aaa.o: aaa.c aaa.h

Be der Ausführung kommt dieser Fehler:

In function `main':
: undefined reference to `Fopen'
collect2: ld returned 1 exit status

Muss ich noch im makefile bbb irgendwo angeben? Dachte das wäre mit dem include erledigt?
Und wenn ja, wie gebe ich im makefile einen Pfad in ein Unterverzeichnis an? Einfach ./U1/bbb.c?

Wo liegt mein Fehler? Danke schonmal.
 
OK, ich muss natürlich im Makefile noch bbb.o angeben:
Code:
CC = gcc
CFLAGS = -c

aaa: aaa.o bbb.o
   $(CC) -o $@ aaa.o bbb.o

.c.o:
   $(CC) $(CFLAGS) $<

aaa.o: aaa.c aaa.h

bbb.o: bbb.c bbb.h

ABER im Beispiel liegen die bbb Dateien im selben Verzeichnis wie aaa. Wie gebe ich im makefile aber PFadangeben in das Unterverzeichnis U1 an? Da liegen nämlich meine bbb Dateien.
 
Ja klar, das ist C.

Nur im gleichen Verzeichnis? Bist du dir sicher? Gerade bei C++, wo man mit Klassen arbeitet, wäre das doch sehr schlecht, oder?
 
Wo is das Problem?
Code:
CC := gcc
LD := gcc

aaa: aaa.o
    ${LD} -o $@ $^;

bbb: U1/bbb.o
    ${LD} -o $@ $^;

%.o: %.c
    ${CC} -Wp,-MMD,$(@D)/.$(@F).d -c -o $@ $<;

-include .*.d */.*.d
.h-Abhängigkeiten inklusive.
 
oh...ich hab keine Ahnung was du da für Abkürzungen benutzt. Danke, das schau ich mir mal genauer an.
 
Oben