Makefile Nachhilfe
-
Ich wollte gerade ein Projekt von ANSI-C nach CPP konvertieren.
Beim Kompilieren meiner main.cpp sagt mir der Linker undefined reference auf Funktionen einer eingebundenen Library.
Ich binde die GSM-Library ein: http://kbs.cs.tu-berlin.de/~jutta/toast.html
Mein Makefile sieht so aus:
LIBGSM = lib/libgsm.a all: gsm gsm: gsm.o gcc -o gsm gsm.o $(LIBGSM) gsm.o: main.cpp gcc -c -O2 -Wall $^ -o $@
Ersetze ich die main.cpp durch eine ANSI-konforme main.c funktioniert das Ganze problemlos.
Hat jemand eine Idee wo der Fehler steckt?
-
Der C++ Compiler heißt g++, nicht gcc
[ Dieser Beitrag wurde am 30.12.2002 um 22:39 Uhr von Headhunter editiert. ]
-
Ich weiß - gleiches Ergebniß!
Habe eben ein bischen ausprobiert!
Der gcc kann auch c++
-
Der Unterschied zwischen gcc und g++ ist die eingebundene Library. Oder seh ich das falsch?
-
Mag sein, dass ich die Frage falsch verstehe, aber die Library binde ich in beiden Fällen ein. Mit dem g++ sieht mein Makefile so aus:
LIBGSM = lib/libgsm.a all: gsm gsm: gsm.o g++ -o gsm gsm.o $(LIBGSM) gsm.o: main.cpp g++ -c -O2 -Wall $^ -o $@
-
Problem gelöst! Ich habe auch die libgsm mit dem g++ erstellt. Jetzt funktioniert es.
Aber verstehen tu ich das nicht. Hat jemand von Euch eine Idee?
-
Naja, der gcc linkt gegen die libc.so., der g++ IIRC gegen die libstdc++.so., daran wirds wohl liegen.
-
Klingt logisch - Danke!