ubuntuusers.de

GCC Linker Problem

Status: Gelöst | Ubuntu-Version: Kubuntu 9.04 (Jaunty Jackalope)
Antworten |

Setsuna

Anmeldungsdatum:
21. Mai 2008

Beiträge: 87

Hallöchen!

Da ich schon länger in C++ programmiere habe ich mir ein eigenes include-Verzeichnis erstellt in welchem ich diverse Klassen (debug, error, usw...) lagere die ich immer wieder verwende. Bis jetzt habe ich immer einen Symbolischen Link zur Header- und einen zur Quelldatei in das eigentliche Programmierverzeichnis gelegt und immer dort kompiliert. Da das natürlich unnötig ist bin ich dazu übergegangen die Header- und Quelldateien zu lassen wo sie sind und dem Kompiler direkt zu sagen wo sie liegen. Dazu habe ich in meinem Makefile ein Macro mit dem Inhalt /Pfad/zum/include/Verzeichnis erstellt welches ich an -I und -l anhänge, damit sowohl die Headerdatei als auch die Object-Datei gefunden werden können.

Das Makefile sieht so aus:

TARGET = XML
CC = g++
OBJ = main.o XML.o XML_Attribute.o XML_Element.o
# Path to your include-directory
EXTERNAL = /home/setsuna/Progs/include/
FLAGS = -I$(EXTERNAL) -l$(EXTERNAL) -Wall

all: XML

XML: $(OBJ)
	$(CC) -o XML $(OBJ) $(FLAGS)

$(OBJ): $(subst .o,.cpp,$@) $(subst .o,.h,$@)
	$(CC) -c $(subst .o,.cpp,$@) $(FLAGS)

.Phony : run
run: $(TARGET)
	@./$(TARGET)

.PHONY : clean
clean:
	rm -f $(TARGET)
	rm -f $(OBJ)

Leider bekomme ich beim Linken der Object-Dateien folgende Fehlermeldung:

g++ -o XML main.o XML.o XML_Attribute.o XML_Element.o -I/home/setsuna/Progs/include/ -l/home/setsuna/Progs/include/ -Wall
/usr/bin/ld: cannot find -l/home/setsuna/Progs/include/
collect2: ld gab 1 als Ende-Status zurück
make: *** [XML] Fehler 1

Nun habe ich aber keine Ahnung woran das liegt. Der Pfad ist sicher korrekt:

setsuna@Magi:~/Progs/include$ pwd
/home/setsuna/Progs/include

Kann mir jemand vielleicht sagen woran das liegen könnte?

Bitte um Hilfe Setsuna

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

-l ist nicht dafür da, den Pfad zu Objektdateien anzugeben, sondern dient dazu, die Namen zu linkender Bibliotheken zu übergeben (es ist übrigens auch nicht so, dass das nicht dokumentiert wäre 🙄). Um Pfade zu Bibliotheken anzugeben, dient die -L-Option.

Setsuna

(Themenstarter)

Anmeldungsdatum:
21. Mai 2008

Beiträge: 87

Hallo Lunar!

Da habe ich mich scheinbar etwas vertan *hüstel*

danke für den Hinweis! Setsuna

Antworten |