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

SDL Anwendung mit KDevelop

Kruxx

Newbie
Ich würde gerne eine SDL Anwendung mit KDevelop in C++ schreiben. Jetzt hab ich allerding Probleme mit den zusätzlichen librarys (z.B. SDL_image). Ich habe SDL_image rpm als auch SDL_image-Devel rpm installiert, aber beim Versuch zu kompilieren bekomme ich folgenden Fehler:
/home/Krux/Documents/C++/sdltest/src/Tux.cpp:28: undefined reference to `IMG_Load'
/home/Krux/Documents/C++/sdltest/src/Tux.cpp:28: undefined reference to `IMG_Load'

könnt ihr mir bitte verständlich erklären, was mir noch fehlt.
 
Es genügt nicht, die Bibliothek zu installieren, Du musst sie auch benutzen. D.h. Du musst dafür sorgen, dass "-lSDL_image" im Linker-Aufruf landet, indem Du es entweder zum Makefile oder zu den Projekt-Einstellungen hinzufügst.
 
OP
K

Kruxx

Newbie
ok jetzt der nächste fehler:

libtool: link: cannot find the library `/usr/local/lib/libSDL.la'

wo bekomm ich dennn die her?
 

oc2pus

Ultimate Guru
die sollte im Paket SDL-devel enthalten sein ... und wurde dann nach /usr/lib installiert NICHT /usr/local/lib
 
libtool ist ein Verbrechen gegen die Menschlichkeit. Warum zum Henker es die Bibliothek in /usr/local/lib erwartet, obwohl sie in /usr/lib ist, weiß ich nicht, aber ich kenne das Problem und konnte nie herausfinden, woran es liegt und wie man es "richtig" löst.

Probier es mal mit einem Symlink:
Code:
ln -sf /usr/lib/libSDL.la /usr/local/lib/libSDL.la
Achtung, das ist ein Workaround und keine Lösung.
 
OP
K

Kruxx

Newbie
wow ich hab das jetzt zu den Linker flags hinzugefügt, und configue hat auch noch mitgespielt, aber der Fehler ist immernoch der Selbe
 
OP
K

Kruxx

Newbie
-L/usr/lib -lSDL_image -lSDL

cd '/home/Krux/Documents/C++/sdltest/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -j1
gmake all-recursive
Making all in src
Linken der Datei sdltest (libtool)
libtool: link: cannot find the library `/usr/local/lib/libSDL.la'
gmake[2]: *** [sdltest] Fehler 1
gmake[1]: *** [all-recursive] Fehler 1
gmake: *** [all] Fehler 2

ich weis getzt nicht genau was ich posten soll, aber ich denke alles ist nicht zu viel in diesem Fall
 
OP
K

Kruxx

Newbie
kann es sein, dass ich die SDL_image library falsch installiert habe, bzw die falsche rpm benutzt habe? Wenn ja, wie kann ich Programme die mit einem Schloss bzw -i- in yast gekennzeichnet sind wieder löschen?
 

oc2pus

Ultimate Guru
Mach zuerst ein make clean und starte dann dein make nochmal.
Und diese ganze Ausgabe postest du dann mal

traffic und Ich wollen die gcc Aufrufe auch sehen :)
 
OP
K

Kruxx

Newbie
ich weiß jetzt überhaupt nicht was du meinst sorry, wo soll ich mein make clean macchen, in KDevelop, in meinem Projektordnern oder redest du vieleicht über SDL_image installation?? bitte dramnschreiben worüber du redest
 
Es geht darum, dass ich wissen müsste bzw. möchte, was libtool da eigentlich macht. Im Moment steht da nur
Code:
Linken der Datei sdltest (libtool)
Ich bräuchte aber sowas hier:
Code:
libtool --mode=link g++ object1.o object2.so -L/verzeichnis -lbibliothek ...
Lässt sich das Build-System nicht irgendwie auf "verbose" umstellen?
 
OP
K

Kruxx

Newbie
Dass da libtool nur Murx baut, hab ich auch schon festgestellt, aber ich weiß nicht wie man mit libtool umgeht und wusste bis zu dem Fehler auch nichtmal, dass es sowas wie libtool überhaupt giebt. Also ich wäre sehr dankbar, wenn ihr mir Helft die Probleme selbst zu lösen, also wenn ihr mir sagt, wie ich in KDevelop die Einstellungen für libtool ändere, oder muss ich die Allgemein ändern?

Und was verbose ist weiß ich erst recht nicht, Ich bin absolut unwissend, mit allem was Linken, Linux, SDL, Automake und Konsorten Angeht. Ich kenn mich nur nen bisschen mit C++ bis zu Klassen aus und hab ausser win32 Konsolenanwendungen noch nichts geschrieben.Also wenn ihr mir helfen wollt, dann fragt mich bitte nicht nach irgendwelchen informationen, sondern erklärt für Doofe jeden einzelnen Schritt den ich machen muss, um für euch an diese Informationen zu kommen. Wenn ihr euch so viel Zeit für den Post nehmt, dann bin ich euch sehr Dankbar.

EDIT: und was libtool da macht, kann ich leider nicht sagen
 
Ja, ist doch OK, das Problem ist, dass ich leider genauso wenig weiß, was libtool da macht. Genau das müsste ich aber wissen.

libtool, automake & Co. kenne ich, aber kdevelop nicht, deshalb weiß ich nicht, wie man das so einstellt, dass die Kommandos vollständig angezeigt werden.

Probier mal diese Tipps:

http://www.kdevelop.org/index.html?filename=3.3/faq.html#What_to_do_when_automake_.26_friends_fails_with_strange_error_messages.3F

http://www.kdevelop.org/index.html?filename=3.3/faq.html#How_to_link_against_a_.la_library.3F

http://www.kdevelop.org/index.html?filename=3.3/faq.html#Why_don.27t_I_see_the_compilation_error_messages.3F

EDIT: Google sagt, dass der Fehler direkt von den .la-Dateien kommt. D.h. der kommt daher, dass irgendeines der verwendeten libtool-Archive die libSDL.la mit dem absoluten Pfad referenziert.

Helfen könnte der o.g. Symlink (Achtung, "dirty"), oder dass man die betroffene kaputte .la-Datei selbst mit einem Editor korrigiert.
 
Oben