Mailinglist Archive: opensuse-de (4938 mails)

< Previous Next >
Re: makefile
  • From: ubtj@xxxxxxxxxxxxxxxxxxx (Thomas Hertweck)
  • Date: Mon May 29 09:13:22 2000
  • Message-id: <20000529111321.A1801@xxxxxxxxxxxxxxxxxxxxxxxxxxx>



Hallo Matthias,

On Mon, 29 May 2000, Matthias Dort wrote:
es geht um das Kompilieren eines Progs, dass urspruenglich fuer OS/2
geschrieben wurde. Das klappt jetzt soweit auch ganz gut. Das makefile
sieht jetzt folgendermassen aus:

So funktioniert es NICHT:
--cut--
LFLAGS +=3D -lm
CFLAGS += -D UNIX
hide4pgp: hide4pgp.o bmp.o wav.o voc.o utils.o scramble.o
--cut--

So funktioniert es:
--cut--
LFLAGS +=3D
CFLAGS += -D UNIX
hide4pgp: hide4pgp.o bmp.o wav.o voc.o utils.o scramble.o -lm
--cut--

Ohne den Parameter "-lm" können die math-librarys
nicht gefunden werden. Ich bin mir aber nicht sicher, ob da hingehört.
[...]

Eigentlich gehoert er da nicht hin, wo er jetzt steht.....
Auch die LFLAGS sehen schon etwas seltsam aus, normalerweise
sollte da etwas der Art "LFLAGS += -l3D -lm" stehen, falls es sich
um Flags fuer den Linker handelt, das 3D alleine macht wenig Sinn.
Normalerweise werden Linker-Flags aber auch der Variablen LDFLAGS
zugewiesen. Die Zeile, in der -lm jetzt steht, gibt eigentlich nur
die Abhaengigkeiten von hide4pgp an. Wenn implizite Regeln im
Makefile verwendet werden, so werden aus den aufgefuehrten
Objekt-Files die ausfuehrbare Datei hide4pgp zusammengelinkt.
Schau mal nach, wo bereits LFLAGS gesetzt wurde, da in dem hier
wiedergegebenen Auschnitt nur neue Daten angehaengt werden (+=).
Dann schaue nach, wie beim Compileraufruf bzw. Linkeraufruf die
entsprechenden Variablen benutzt werden. Dort solltest Du dann
erkennen, wie die Syntax auszusehen hat. Eventuell muss man sich
das gesamte Makefile mal komplett ansehen. Wir eigentlich GNU make
benutzt? Du kannst auch mal einfach ein "gmake -n <target>"
eingeben, dann bekommst Du explizit gesagt, welche Befehle
ausgefuehrt werden, vielleicht hilft das ja weiter...... Bei Bedarf
melde Dich einfach nochmal, auch per PM! Mein grober Vorschlag
waere (ungetestet und natuerlich nur ein Auszug aus dem gesamten
Makefile):

CC = gcc
LDFLAGS = -l3D -lm
CFLAGS = -O -DUNIX -ansi
.c.o:
$(CC) $(CFLAGS) -c -o$@ $<
OBJ = hide4pgp.o bmp.o wav.o voc.o utils.o scramble.o
hide4pgp: $(OBJ)
$(CC) $(LDFLAGS) -o$@ $(OBJ)
hide4pgp.o: hide4pgp.c
bmp.o: bmp.c
wav.o: wav.c
voc.o: voc.c
utils.o: utils.c
scramble.o: scramble.c

Gruesse
Thomson


--
Dipl.-geophys. Thomas Hertweck
Geophysikalisches Institut, Universitaet (TH) Karlsruhe
Email: ubtj@xxxxxxxxxxxxxxxxxxx
Linux is like a wigwam - no windows, no gates, apache inside!

---------------------------------------------------------------------
To unsubscribe, e-mail: suse-linux-unsubscribe@xxxxxxxx
For additional commands, e-mail: suse-linux-help@xxxxxxxx


< Previous Next >
References