PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit KDevelop



Camel69
02-10-2002, 15:38
Hallo!

Bin in Linux ziemlich neu...vielleicht liegts bei manchen fehlern auch daran :)

kleine frage:
darf man die sdl in seine engine einbinden und damit komerzielle programme machen?

hauptproblem:
Ich schaff es einfach nicht, in kdevelop alles zum laufen zu kriegen...
wenn ich erstellen->configure mache, kommt ne fehlermeldung und erstellen geht auch nicht. und unter projekte->optionen kann ich die linker und make options nicht ändern (alles grau)...aber das brauch ich ja eigentlich, um libs einzubinden (oder?)

anda_skoa
02-10-2002, 16:01
Original geschrieben von Camel69
kleine frage:
darf man die sdl in seine engine einbinden und damit komerzielle programme machen?


Ja, die SDL steht unter LGPL.
Nur Änderungen an der Lib selbst müssen wieder LGPL sein.
Außerdem meinst du nicht kommerziell, sondern proprietär.
Kommerziell ist, wenn es um Geld geht, proprietär, wenn es um das unetr Verschluß halten von internen Details geht.



hauptproblem:
Ich schaff es einfach nicht, in kdevelop alles zum laufen zu kriegen...
wenn ich erstellen->configure mache, kommt ne fehlermeldung und erstellen geht auch nicht. und unter projekte->optionen kann ich die linker und make options nicht ändern (alles grau)...aber das brauch ich ja eigentlich, um libs einzubinden (oder?)

Ah, deja vu :)
(darauf hab ich glaub ich auf linuxforen.de geantwortet)

Wenn du ein neues Projekt erzeugst, wie weit kommt er da?

Ciao,
_

Camel69
02-10-2002, 16:52
hehe, werd gleich mal schauen :)
da hatte halt bisher noch keiner geschrieben, da dachte ich, hier wäre es besser aufgehoben

ich meine komerziell!!! ;)

anda_skoa
02-10-2002, 17:20
Original geschrieben von Camel69
hehe, werd gleich mal schauen :)
da hatte halt bisher noch keiner geschrieben, da dachte ich, hier wäre es besser aufgehoben


Ist es ansich eh :)



ich meine komerziell!!! ;)

Ah, ok.
Sehr oft gibt es da Missverständnisse, vorallem bei GPL.
Die einzige Lib, die kommerzielle Nutzung verbietet (und mir gerade einfällt) ist die Qt/Windows mit non-commercial license.

Ich kenn sonst eigentlich keine Lizenz, die kommerzielle Nutzung verbietet.

Ciao,
_

Camel69
02-10-2002, 17:32
also kann ich die sdl in meine engine einbetten und das ganze auch ruhig für komerzielle programme verwenden..gut

zu kdevelop: jepp, hab ein projekt offen
kann auch auf erstellen und sowas klicken, nur funzt das eben nicht...

anda_skoa
02-10-2002, 18:36
Hmm, beim Erzeugen des Projekts gibt es also keine Probleme?

Geh mal ins Verzeichnis des Projekts und versuche
#> make -f Makefile.dist



also kann ich die sdl in meine engine einbetten und das ganze auch ruhig für komerzielle programme verwenden


Ja, sogar in proprietärer Software, das LGPL.

Ciao,
_

Camel69
02-10-2002, 22:16
Makefile nicht vorhanden
die Meldung hatte ich glaube ich auch in kdevelop schonmal

wenn ich erstellen -> datei compilieren mache:
make: *** Keine Regel, um »test.o« zu erstellen. Schluss.
*** fehlgeschlagen ***

wenn ich erstellen mache, kommt, dass ich erstellen -> configure aufrufen soll

wenn ich erstellen configure so ausführe
--build=i386-linux --host=i386-linux --target=i386-linux
kommt:
/bin/sh: ./configure: Datei oder Verzeichnis nicht gefunden
*** fehlgeschlagen ***


.......??? :confused:

anda_skoa
03-10-2002, 10:02
Es gibt kein Makefile.dist?
Das erzeugt nämlich das configure.

Keine Ahnung wie du ein KDevelop Projekt generieren konntest, ohne dass es eine Makefile.dist gibt.

Das Buildsystem funktioniert so
zuerst erzeugt das Makefile.dist auf dem configure.in.in das configure und noch ein paar andere Scahen.
Dann das configure ein paar Sachen und erst dann gibt es die Makefiles.

Bevor du also kein configure hast, brauchst du spätere Schritte nicht zu versuchen.

Wie schon gesagt, ich hatt bisher immer ein Makefile.dist
Mich wundert, dass du bei einem neuen Projekt auch keins bekommst.
Du hast du wie vorgeschlagen mal ein neues Projekt erstellt, oder?
Kamen da wirklich keine Fehlermeldungen?

Ciao,
_

Camel69
03-10-2002, 20:09
mein fehler lag daran, dass ich immer eigenes projekt gewählt habe
hab jetzt mal c++-prjekt genommen und jetzt gehts

allerdings gibts schon ein neues problem: hab unter projectoptions -> compileroptions -> configure bei --x-includes mal mein SDL/include verzeichnis eingetragen, wo auch die SDL.h drin ist
aber wenn ich in meinem quellcode nun #include <SDL.h> schreibe, findet er sie nicht

dann hab ich sie mal zum projekt hinzugefügt, macht aber wenig sinn, da er dann nach und nach 20 ode rmehr dateien braucht...d.h. man kann den halben abend lang dateien includen und hat dannach sauviele in seinem projekt dirn... :confused:

anda_skoa
03-10-2002, 20:44
--x-includes ist für die X header

SDL gehört in die Zeile Additonal Options
-I/pfad/zu/sdl

Am besten einfach den output von
#> sdl-config --cflags
reinkopieren

und bei den linker options
#> sdl-config --libs

Zu SDL und KDevelop gibt es hier im Forum auch ein paar andere Threads, wenn ich mich recht erinnere.
(Außerdem ist das glaub ich sogar ein FAQ auf www.libsdl.org)

Ciao,
_

Camel69
03-10-2002, 23:00
hab jetzt mal laut deiner anleitung und einigen faq's folgendes unter compiler-options -> configure unter weitere optionen eingetragen:
`sdl-config --cflags`

allerdings kommt bei einem ok dann folgendes:

Ausführen von configure im Build-Verzeichnis.
configure: error: unrecognized option: -I/usr/include/SDL
Try `./configure --help' for more information.
*** fehlgeschlagen ***

:(

anda_skoa
03-10-2002, 23:02
Ja, das -I gehört bei den CFLAGS, nicht bei configure

Ciao,
_

Camel69
04-10-2002, 15:04
also hab unter compileroptions -> Schalter und Warnungen unter CFLAGS `sdl-config --cflags` eingetragen - funzt auch wunderbar, er findet die SDL.h jetzt
AAABER: es fehlen ja noch die libs
also trag ich unter compileroptions -> Linker-Schalter unter Weitere Optionen `sdl-config --libs` ein
das komische an dieser eingabezeile ist, dass kdevelop irgendwie immer ein oder 2 leerzeichen davor setzt....und manchmal lässt sich der code compilieren und manchmal kommt folgende fehlermeldung (die wieder verschwindet, wenn ich die sdl-config --libs zeile wieder lösche):
/usr/i486-suse-linux/bin/ld: cannot find -laa
collect2: ld returned 1 exit status

anda_skoa
04-10-2002, 15:28
Hmm.
bei mir ist sdl-config --libs nur
-L/usr/lib -lSDL -lpthread

Vielleicht ist dein SDL gegen libaa gelinkt.

Vielleicht trägst du besser den Output direkt ein, anstatt des Aufrufs.
Wahrscheinlich reicht die -L Direktive und -lSD, bzw. wenn SDL wie bei mir in /usr/lib ist, sollte auch -lSDL reichen.

Ciao,
_

Camel69
04-10-2002, 16:43
wenn ich
-L/usr/lib -lSDL -lpthread
eintrage, kommt wieder die gleiche fehlermeldung
wenn ich nur -L/usr/lib eintrage, findet er eben den code für SDL_Init() nicht...

das komische ist ja, dass es manchmal ging, und dann wieder nicht...(bei ner leeren main())
wenn ich jetzt was mit sdl programmieren will, gehts nicht....

anda_skoa
04-10-2002, 17:44
Original geschrieben von Camel69
wenn ich
-L/usr/lib -lSDL -lpthread
eintrage, kommt wieder die gleiche fehlermeldung
wenn ich nur -L/usr/lib eintrage, findet er eben den code für SDL_Init() nicht...


Du sollst ja auch das -L weglassen nicht das -lSDL :)
Das erste gibt ja nur einen Pfad an, der im Falle von /usr/lib nicht nötig ist.
Das zweite gibt an, mit welcher Lib gelinkt werden soll.



das komische ist ja, dass es manchmal ging, und dann wieder nicht...(bei ner leeren main())
wenn ich jetzt was mit sdl programmieren will, gehts nicht....

Ja, das ist klar.
Wenn du keine Sachen aus libSDL verwendest, muß sie der Linker auch nicht linken.

Ciao,
_

Camel69
04-10-2002, 18:38
vielleicht hab ich's immer noch nicht kapiert :rolleyes:
aber wenn ich jetzt bei den linkeroptions -lSDL (kleines L ist das, oder?) oder -lSDL -lpthread eintrage, kommt wieder die alte fehlermeldung...

anda_skoa
04-10-2002, 18:41
Hmm, ja kleines L

Versuch mal , auf der Konsole zu kompilieren.
eine main.c schreiben, die einen mind. SDL Befehl enthält
dann
#> gcc -o sdltest main.c $(sdl-config --cflags --libs)

Und den Output posten, falls es nicht geht.

Ciao,
_

Camel69
04-10-2002, 19:14
also, output kommt keiner, d.h. wohl, es ist alles ok
wenn ich eingebe: if(SDL_Init(SDL_INIT_VIDEO) == 0) printf("irgendwas");
dann gibt er das auch aus...heißt das. die funktion schlägt fehl? oder ist das erst, wenn < 0?

anda_skoa
04-10-2002, 19:37
Original geschrieben von Camel69
also, output kommt keiner, d.h. wohl, es ist alles ok


Hmm, dann sollte es auch in KDevelop gehen. :(



wenn ich eingebe: if(SDL_Init(SDL_INIT_VIDEO) == 0) printf("irgendwas");
dann gibt er das auch aus...heißt das. die funktion schlägt fehl? oder ist das erst, wenn < 0?

aus
#> man SDL_Init



RETURN VALUE
Returns -1 on an error or 0 on success.


Ciao,
_

Camel69
04-10-2002, 20:35
zumindest kann ich ja dann so meine sachen kompilieren...wäre in kdevelop natürlich praktischer, wegen den fehlermeldungen (syntaxerrors z.b.), aber immerhin....

anda_skoa
04-10-2002, 20:50
Original geschrieben von Camel69
also hab unter compileroptions -> Schalter und Warnungen unter CFLAGS `sdl-config --cflags` eingetragen - funzt auch wunderbar, er findet die SDL.h jetzt
AAABER: es fehlen ja noch die libs
also trag ich unter compileroptions -> Linker-Schalter unter Weitere Optionen `sdl-config --libs` ein


Probier die Libs mal bei Linker Optionen
(eines unter Compiler Options)

Ciao,
_

Camel69
05-10-2002, 22:16
bringt auch nix, es kommt immer noch "cannot find -laa" hier mal die ganze meldung, vielleicht kann jemand damit was anfangen....:

cd . \
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
/bin/sh ./config.status
config.status: creating config.h
config.status: config.h is unchanged
gmake all-recursive
gmake[1]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1«
cd . && \
/bin/sh /home/camel69/codeeye/projects/sdl_test1/admin/missing --run automake --foreign ./Makefile
cd . && perl admin/am_edit Makefile.in
cd . && \
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=Makefile /bin/sh ./config.status
fast creating Makefile
gmake[1]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1«
gmake[1]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1«
Making all in sdl_test1
gmake[2]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1«
cd .. && \
/bin/sh /home/camel69/codeeye/projects/sdl_test1/admin/missing --run automake --gnu sdl_test1/Makefile
cd .. && perl admin/am_edit sdl_test1/Makefile.in
cd .. && \
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=sdl_test1/Makefile /bin/sh ./config.status
fast creating sdl_test1/Makefile
gmake[2]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1«
gmake[2]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1«
Making all in docs
gmake[3]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs«
cd ../.. && \
/bin/sh /home/camel69/codeeye/projects/sdl_test1/admin/missing --run automake --gnu sdl_test1/docs/Makefile
cd ../.. && perl admin/am_edit sdl_test1/docs/Makefile.in
cd ../.. && \
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=sdl_test1/docs/Makefile /bin/sh ./config.status
fast creating sdl_test1/docs/Makefile
gmake[3]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs«
gmake[3]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs«
Making all in en
gmake[4]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs/en«
cd ../../.. && \
/bin/sh /home/camel69/codeeye/projects/sdl_test1/admin/missing --run automake --gnu sdl_test1/docs/en/Makefile
cd ../../.. && perl admin/am_edit sdl_test1/docs/en/Makefile.in
cd ../../.. && \
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=sdl_test1/docs/en/Makefile /bin/sh ./config.status
fast creating sdl_test1/docs/en/Makefile
gmake[4]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs/en«
gmake[4]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs/en«
gmake[4]: Für das Target »all« gibt es nichts zu tun.
gmake[4]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs/en«
gmake[4]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs«
gmake[4]: Für das Target »all-am« gibt es nichts zu tun.
gmake[4]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs«
gmake[3]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1/docs«
gmake[3]: Wechsel in das Verzeichnis Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1«
/bin/sh ../libtool --mode=link --tag=CXX g++ -O2 -O0 -g3 -Wall -I/usr/include/SDL -D_REENTRANT -fno-exceptions -fno-check-new -o sdl_test1 main.o -lSDL -lpthread
mkdir .libs
g++ -O2 -O0 -g3 -Wall -I/usr/include/SDL -D_REENTRANT -fno-exceptions -fno-check-new -o sdl_test1 main.o /usr/lib/libSDL.so /usr/lib/libasound.so -L/opt/kde3/lib -lartsc -L/usr/lib /usr/lib/libesd.so /usr/lib/libaudiofile.so -lm -L/usr/X11R6/lib -lX11 -lXext -lXxf86vm -lXxf86dga -lXv -lXinerama -laa -ldl -lpthread
gmake[3]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1«
gmake[2]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1/sdl_test1«
gmake[1]: Verlassen des Verzeichnisses Verzeichnis »/home/camel69/codeeye/projects/sdl_test1«
/usr/i486-suse-linux/bin/ld: cannot find -laa
collect2: ld returned 1 exit status
gmake[3]: *** [sdl_test1] Fehler 1
gmake[2]: *** [all-recursive] Fehler 1
gmake[1]: *** [all-recursive] Fehler 1
gmake: *** [all] Fehler 2
*** fehlgeschlagen ***


es ist schon ok, dass ich `sdl-config --cflags` bei CPPFLAGS, CFLAGS und CXXFLAGS eintrage, oder? er findet die header sonst nicht alle - und es ist ja auch ein c++-projekt

anda_skoa
05-10-2002, 22:49
Original geschrieben von Camel69
bringt auch nix, es kommt immer noch "cannot find -laa" hier mal die ganze meldung, vielleicht kann jemand damit was anfangen....:


Dann würde ich vorschlagen, du nimmst das -laa raus :)



es ist schon ok, dass ich `sdl-config --cflags` bei CPPFLAGS, CFLAGS und CXXFLAGS eintrage, oder? er findet die header sonst nicht alle - und es ist ja auch ein c++-projekt

Hmm, CXXFLAGS oder CFLAGS sollte reichen.

Die CPRFLAGS sind für den Präprozessor, sollten hier also nicht nötig sein.

Ciao,
_

Camel69
06-10-2002, 11:11
hmm, hab ich irgendwie ne total veratzte version von kdevelop 2.1???
die präprozäserflags heißen bei mir in den options CPPFLAGS :confused:

hmm, muss da mal ganz dumm fragen: wo mach ich das -laa weg? :) bei ner zeile, wo ich meineweiteren optionen immer eintrage steht nix...

anda_skoa
06-10-2002, 12:41
Original geschrieben von Camel69
hmm, hab ich irgendwie ne total veratzte version von kdevelop 2.1???
die präprozäserflags heißen bei mir in den options CPPFLAGS :confused:


Sorry, mein Fehler. Die Präprozessor Flgs heißen CPPFLAGS.



hmm, muss da mal ganz dumm fragen: wo mach ich das -laa weg? :) bei ner zeile, wo ich meineweiteren optionen immer eintrage steht nix...

Ich hatte den Eindruck, dass das -laa Teil der Ausgabe von sdl-config --libs ist.
Wüßte sonst nicht, woher das kommt.

Was hast du für einen Projekttyp?
Terminal/C++ oder "Eigenes Projekt"

Ciao,
_

Camel69
06-10-2002, 13:32
terminal/c++
mit dem eigenen projekt hatte ich ja das problem, dass ich ganz ganz am anfang dieses thread mal beschrieben hatte, dass es sich eben nicht kompilieren/erstellen lies

anda_skoa
06-10-2002, 14:28
Ahja, stimmt.
Werd mal ein solches projekt generiren.

Kannst du trotzdem den Output von sdl-config --libs posten?

Ciao,
_

Camel69
06-10-2002, 16:49
-L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lpthread

z.zt. arbeite im zum kompilieren mit g++, da funzt wenigstens :)
allerdings steig ich da noch nicht so voll bei den ganzen parametern durch...
ich will sdl und ogl sachen benutzen und 2 cpp dateien kompilieren
was ist daran falsch:
g++ -o sdltest main.cpp myogl.cpp `sdl-config --cflags --libs` -I/usr/include/GL
?

anda_skoa
07-10-2002, 11:14
Da fehlt auf jeden Fall noch die Angabe der GL Bibliothek, also -lGL

Wenn du nur wenige Sourcefiles hast, kannst du dir ein Makefile auch selber erstellen.
Dann kannst du auch "Eigenes Projekt" in KDevelop benutzen.

Warum bei dem C++ Projekt libaa gelinkt wird, bzw es versucht wird, versteh ich nicht.
Wenn ich eines erzeuge, dann kommt -laa nicht vor.

Ciao,
_

Camel69
07-10-2002, 18:21
heißt das, -laa ist ne lib, die er zu linken versucht, aber nicht findet?
kann man die dann nicht irgendwo rauslöschen - aus dem makefile vielleicht - ka ;)

anda_skoa
07-10-2002, 18:28
Ja, wenn was mit -l (kleines L) anfängt, ist es immer eine Linkerdirektive, die besagt, dass die Library mit dem Name
libXXX gelinkt werden soll.
In dem Fall libaa.

Du kannst in den Makefile.am Dateien nachsehen, ob das w da -laa vorkommt.
Das Problem ist, das KDevelop diese Dateien generiert.
Bei der nächsten Änderung steht es also wieder drinnen.

Ciao,
_