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

Problem: Mit KDevelop 3.1 und libxml2 unter SuSE 9.2

Ich habe ein C++Programm geschrieben welches ein XML-File parsen soll.

Dazu habe ich die benötigten Headerfiles eingebunden:

#include libxml/tree.h
#include libxml/parser.h

Wenn ich nun compilieren möchte, so bekomme ich immer den Fehler:

tree.h not found
parser.h not found

Darauf hin habe ich geschaut, wo diese h-Files gespeichert werden.
Und das Verzeichnis lautet: /usr/include/libxml2/libxml/

Deshalb habe ich in KDevelop bei den "Compiler Options" folgenden Eintrag gemacht:

-I /usr/include/libxml2/

Nach einem erneuten Compileversuch erschien nun folgende Medlung:

undefined reference to `xmlCheckVersion' (xmlCheckVersion verwende ich)

Was stimmt da mit den Pfaden nicht?

Ich habe das libxml2 direkt bei der Installation von SuSE 9.2 mit installieren lassen. Auch das libxml2-devel Paket ist mit installiert.

Falls dafür von Euch jemand eine Lösung hat, wäre ich ihm sehr dankbar?

Gruss Helios
 
OP
H

Helios Son

Newbie
Danke für die schnelle Antwort. :D

Leider habe ich noch nicht viel mit den Makefile gemacht.

So sieht mein Makefile.am in dem Sourceverzeichnis aus. Die Angaben mit -I habe ich hinzugefügt. Aber leider funktioniert das auch nicht.


#################################
bin_PROGRAMS = parser
parser_SOURCES = parser.cpp

# set the include path found by configure
INCLUDES= -I /usr/include/libxml2 $(all_includes)

# the library search path.
parser_LDFLAGS = $(all_libraries)

AM_CPPFLAGS= -I /usr/include/libxml2/ $(all_inlcudes)
#####################################
 

TeXpert

Guru
Helios Son schrieb:
Nach einem erneuten Compileversuch erschien nun folgende Medlung:

undefined reference to `xmlCheckVersion' (xmlCheckVersion verwende ich)

das sagt nicht der Compiler sondern der Linker (evtl. solltest Du noch mal über Compiler und Linker nachlesen ;) ) d.h. Du musst dem Linker den Pfad zu der Bibliothek mitgeben.
 
OP
H

Helios Son

Newbie
Jetzt funktioniert es.

Ich hatte vergessen "parser_LDFLAGS = -L/usr/lib -lxml2 -lz -lpthread -lm" in der Makefile.am anzugeben.

Gruss Helios
 

TeXpert

Guru
warum machst Du das von Hand im automake-file? die werden über die Projekt-Einstellungen von kdevelop gesetzt -> Projektkonfigurieren und Bibliotheken hinzufügen, dann kommen die ganz automatisch dazu...
 

taki

Advanced Hacker
Du meinst aber nicht zufällig diesen Dialog?

kdevelop_project_settings_configure_options.png


Da kannst Du nur allgemeine Schalter setzen (z.B. debug). kdevelop bzw. automake muss ja auch wissen, für welche Ziele es denn die zusätzlichen Bibliotheken überhaupt braucht.

Ich habe anfangs auch dort die zusätzlichen Bibliotheken eingetragen und mich gewundert, dass sich dadurch gar nichts ändert... Bis ich auf das Howto von David Faure gestoßen bin. Wo man noch was sehen kann und auch ändern kann, ist der sogenannte automakemanager. Der spiegelt dann die Einstellungen der Makefile.am wieder. Ich editiere die Makefile.am und kann im automake manager sehen, ob kdevelop das richtig eingelesen hat. Das scheint manchmal ncoh ein wenig buggy zu sein, aber im Großen und Ganzen klappts ganz gut.
 

TeXpert

Guru
ich hab kdevelop3.1 übersprungen :) bei 3.2 funktioniert der automakemanager und bei 3.0 konnte man das alles wunderbar in den Projektoptions einstellen... (das hat auch funktioniert...)

nach einem Blick auf die kdevelop-FAQ fällt auch auf, dass bei der 3.1 in den automake-Files rumbeastelt werden soll...
 
Oben