Hallo!
Ich möchte die Physik-Engine ODE in Eclipse verwenden, aber leider wird
ode.h in Eclipse nicht gefunden.
Ich benutze Eclipse Photon (4.8.0) unter Ubuntu. Ich habe ODE 0.16
bereits mit make und make install installiert.
In Eclipse habe ich ein Projekt mit einem C++ Programm angelegt, das ODE
verwendet.
Leider erscheint in der Zeile
1
#include <ode.h>
der Fehler
1
fatal error: ode.h: Datei oder Verzeichnis nicht gefunden
Unter Project -> Properties -> C/C++ Build -> Cross G++ Linker ->
Libraries habe ich bei Libraries (-l) "ode" eingetragen (ich habe es
auch schon mit "ode.h" versucht).
Bei "Library Search Path (-L) habe ich "/home/user/ode-0.16/include/ode"
eingetragen (in diesem Ordner befindet sich ode.h).
Ich kann nicht nachvollziehen, wieso die ode.h-Datei nicht gefunden
wird. Kennt sich hier jemand aus und kann mir weiterhelfen?
Eclipse-Neuling schrieb:> Unter Project -> Properties -> C/C++ Build -> Cross G++ Linker ->> Libraries habe ich bei Libraries (-l) "ode" eingetragen
Da eine *.h-Datei keine Library ist, ist das der komplett falsche Ort
dafür.
Du musst den Ort, an dem die Datei zu finden ist, in den Include-Pfad
(Option -I) aufnehmen.
Oder die Datei dort ablegen, wo der Rest Deines Programmes zu finden
ist, und die Datei mit #include "ode.h" einbinden (Anführungszeichen
statt Spitzklammern).
Vielen Dank für die schnelle Antwort!
Rufus Τ. F. schrieb:> Da eine *.h-Datei keine Library ist, ist das der komplett falsche Ort> dafür.
Danke für die Info, ich habe leider noch kaum Erfahrung mit C++
Rufus Τ. F. schrieb:> Du musst den Ort, an dem die Datei zu finden ist, in den Include-Pfad> (Option -I) aufnehmen.
Wo genau mache ich das?
Unter Properties -> C/C++ Build -> Settings gibt es unter Cross GCC
Compiler und unter Cross G++ Compiler jeweils einen Unterpunkt
Includes, wo man Include paths (-I) und Include files (-include) angeben
kann.
Ich habe jetzt bei beiden Includes folgendes eingetragen:
->in Include paths (-I) "/home/user/ode-0.16/include/ode"
und
->in Include files (-include) "/home/user/ode-0.16/include/ode/ode.h".
Es erscheint bedauerlicherweise immer noch der selbe Fehler.
Leider weiß ich auch nicht, welcher Compiler aktuell verwendet wird,
kann man das irgendwo sehen?
Ich habe jetzt meine Eintragungen unter Cross GCC Compiler entfernt,
also stehen die Pfade nur noch unter Cross G++ Compiler -> Includes.
In Echtzeit wird mir jetzt kein Fehler mehr angezeigt, dafür erscheint
bei Build folgender Fehler (mein C++ Programm zum Testen heißt
ODETest2.cpp):
1
19:20:13 **** Incremental Build of configuration Debug for project ODETest2 ****
laut google: Mit dem Befehl g++ -v bekommt man heraus, welcher
C++-Compiler zum Einsatz kommt.
include File ist ja nur das ode.h, also dann da -iode.h oder -iode.
Danke Martin!
martin schrieb:> include File ist ja nur das ode.h, also dann da -iode.h oder -iode.
Wo -iode angeben? Bei Includes habe ich die Datei direkt ausgewählt im
"File system...", dann steht dort automatisch .../ode.h
(Oder reden wir aneinander vorbei?)
Achso verstehe. Ich bin kein Experte und selber auf die Lösung gespannt.
Aber was ich sehe ist, dass
g++ -L/home/user/ode-0.16/include/ode
-L/home/user/ode-0.16/include/drawstuff -o "ODETest2" ./src/ODETest2.o
-l"ode.h" -l"drawstuff.h"
mit -l"ode.h" -l"drawstuff.h" nicht klappt.
Und dass
g++ -I/home/user/ode-0.16/include/ode -I/home/user/ode-0.16/include
-I/home/user/ode-0.16/include/drawstuff
-include/home/user/ode-0.16/include/ode/ode.h
-include/home/user/ode-0.16/include/drawstuff/drawstuff.h -O0 -g3 -Wall
-c -fmessage-length=0 -MMD -MP -MF"src/ODETest2.d" -MT"src/ODETest2.o"
-o "src/ODETest2.o" "../src/ODETest2.cpp"
Finished building: ../src/ODETest2.cpp
mit u.a. -include/home/user/ode-0.16/include/drawstuff/drawstuff.h
klappt.
Meiner Meinung nach ist das mit den Pfaden doppelt gemoppelt (dann durch
Eclipse). Müsste theoretisch nicht auch nur der Pfad reichen?
martin schrieb:> Meiner Meinung nach ist das mit den Pfaden doppelt gemoppelt (dann durch> Eclipse). Müsste theoretisch nicht auch nur der Pfad reichen?
Ich habe jetzt (da anscheinend -include funktioniert hat) die
Einstellung wie auf dem Screenshot im Anhang gemacht.
Die Datei ode.h wurde dann wohl gefunden, es kamen nämlich ersteinmal
Fehlermeldungen auf ode.h bezogen. (Dort und in Hilsdateien wurden mit
#include <ode/*.h> Dateien eingebunden, die sich eigentlich im selben
Ordner befinden - Ich habe das jeweils in #include "*.h" geändert.)
Jetzt ( also nach dem Korrigieren von #include <ode/*.h> zu #include
"*.h" in der Datei ode.h und deren Hilfsdateien) kommt leider wieder ein
Fehler, nämlich
1
fatal error: ode.h: Datei oder Verzeichnis nicht gefunden
Hallo, darf ich meine letzte Frage noch mal nach oben schieben?
Die ursprüngliche Fehlermeldung (bzw. die Kette von Fehlermeldungen)
scheint ja nun beseitigt zu sein, siehe hier:
Beitrag "Re: Eclipse: ode.h wird nicht gefunden"
Allerdings geht nach der Beseitigung der Probleme in den Hilfsdateien
das ganze wieder los:
>fatal error: ode.h: Datei oder Verzeichnis nicht gefunden
Woran könnte das liegen?
Du hättest den Code nicht ändern müssen, sondern nur den Pfad, in dem
die diversen Dateien liegen, zum Includepfad hinzufügen müssen.
Keine einzelnen Dateien (Dein Screenshot, Du nutzt die untere Hälfte für
Eingaben), sondern Pfade (obere Hälfte).
Und da das Verzeichnis, in dem ../ode zu finden ist.
Also anscheinend den Pfad
/home/zensiert/ode-0.16/include
Das sollte genügen.
@Eclipse-Neuling:
Auf deinem Screenshot ist oben eine Combobox, die "Debug" Konfiguration
anzeigt. Include-Pfade sollte man aber nicht für Debug/Release
unterschiedlich einstellen. Bitte "All configurations" auswählen oder,
wie es mir häufig passiert, falls der Release-Build längst gelöste
Probleme meldet, sofort nachschauen, ob man da was schräges konfiguriert
hat.
Einfach nach dem Tutorial vorgehen und nur die Verzeichnisse anpassen
und es sollte klappen. Zumindest in der Konsole. Wenn alles läuft,
kannst du Eclipse konfigurieren.
Du bringst da einiges komplett durcheinander.
-include gibt man dem Compiler nur dann ann, wenn man den Header
nicht per #include-Anweisung im Quellcode einbinden will, sondern
stattdessen über die Compiler-Kommandozeile. Das braucht man in der
Praxis eher selten.
-I benutzt man, um dem Compiler zu sagen, wo er die Header findet, wenn
du ein #include machst. Er setzt dazu den Dateinamen aus dem mit -I
Incpude-Pfad und dem, was in der #inlucde-Anweisung steht, zusammen und
versucht, eine Datei mit diesem Namen dann zu öffnen und einzubinden.
Das macht er für alle angegebenen Include-Pfade, bis er die Datei
findet. Wenn er sie nicht findet, bricht er mit der von dir genannten
Fehlermeldung ab.
-l gibt einen Bibliothekspfad an und hat mit Headern überhaupt nichts zu
tun. Es wird nicht mal beim Compilieren, sondern nur beim Linken
ausgewertet.
Mit -include hast du dem Compiler die Datei explizit genannt. Er bindet
die dann ein. Die #include-Anweisung im Quellcode bindet den Header dann
ein zweites Mal ein, aber da du dem Compiler den Inlucde-Pfad nicht
genannt hast, findet er die Datei nicht.
Eclipse-Neuling schrieb:> Ich habe jetzt (da anscheinend -include funktioniert hat) die> Einstellung wie auf dem Screenshot im Anhang gemacht.>> Die Datei ode.h wurde dann wohl gefunden, es kamen nämlich ersteinmal> Fehlermeldungen auf ode.h bezogen. (Dort und in Hilsdateien wurden mit> #include <ode/*.h> Dateien eingebunden, die sich eigentlich im selben> Ordner befinden - Ich habe das jeweils in #include "*.h" geändert.)
Da sollte man nichts dran ändern. Stattdessen musst du das Verzeichnis,
in dem das Unterverzeichnis ode mit den Headern liegt, als Include-Pfad
angeben.
> Jetzt ( also nach dem Korrigieren von #include <ode/*.h> zu #include> "*.h" in der Datei ode.h und deren Hilfsdateien) kommt leider wieder ein> Fehler, nämlich> fatal error: ode.h: Datei oder Verzeichnis nicht gefunden
In deinem Screenshot ist nichts zu sehen, das dem Compiler sagen würde,
wo er diese Datei finden soll.
zitter_ned_aso schrieb:> Also korrigieren> g++ -o my_demo demo_buggy.o -lode -ldrawstuff -L ~/ode-0.13.1/ode/src/.libs -L
~/ode-0.13.1/drawstuff/src/.libs -lGL -lGLU -lX11- lpthread
Da ist jetzt ein Leerzeichen, aber an falscher Stelle.
Besser dürfte das hier sein:
Rolf M. schrieb:> -include gibt man dem Compiler nur dann ann, wenn man den Header> nicht per #include-Anweisung im Quellcode einbinden will, sondern> stattdessen über die Compiler-Kommandozeile. Das braucht man in der> Praxis eher selten.>> -I benutzt man, um dem Compiler zu sagen, wo er die Header findet, wenn> du ein #include machst. Er setzt dazu den Dateinamen aus dem mit -I> Incpude-Pfad und dem, was in der #inlucde-Anweisung steht, zusammen und> versucht, eine Datei mit diesem Namen dann zu öffnen und einzubinden.> Das macht er für alle angegebenen Include-Pfade, bis er die Datei> findet. Wenn er sie nicht findet, bricht er mit der von dir genannten> Fehlermeldung ab.>> -l gibt einen Bibliothekspfad an und hat mit Headern überhaupt nichts zu> tun. Es wird nicht mal beim Compilieren, sondern nur beim Linken> ausgewertet.
Ah, vielen Dank. Jetzt verstehe ich einigermaßen, was in diese Felder
reingehört.
Dann verstehe ich aber nicht, wieso es nicht funktioniert, wenn ich es
so umsetze:
Ich trage bei -I den Pfad ein, also /home/user/ode-0.16/include. Im
cpp-Programm steht
1
#include </ode/ode.h>
Zusammen ergibt das /home/user/ode-0.16/include/ode/ode.h. Dann ist mir
nicht klar, weshalb ich beim include-Befehl immer noch die Meldung
"Datei oder Verzeichnis nicht gefunden" habe.
Habe ich etwas falsch verstanden?
Carl D. schrieb:> Auf deinem Screenshot ist oben eine Combobox, die "Debug" Konfiguration> anzeigt. Include-Pfade sollte man aber nicht für Debug/Release> unterschiedlich einstellen. Bitte "All configurations" auswählen
Das habe ich übrigens jetzt auch umgesetzt.
zitter_ned_aso schrieb:> Ich bin nach dieser Anleitung>> http://www.espore.co.uk/archives/330>> vorgegangen und konnte ein Beispiel problemlos kompilieren.
Danke für den Link. Bis zum 4. Schritt funktioniert alles einwandfrei.
Beim 5. Schritt habe ich auf das Leerzeichen geachtet. Ich bekomme nach
Eingabe des Befehls
g++ -o my_demo demo_buggy.o -lode -ldrawstuff -L
~/ode-0.16/ode/src/.libs -L ~/ode-0.16/drawstuff/src/.libs -lGL -lGLU
-lX11 -lpthread
folgende Fehler:
/usr/bin/ld: -ldrawstuff kann nicht gefunden werden
/usr/bin/ld: -lGL kann nicht gefunden werden
/usr/bin/ld: -lGLU kann nicht gefunden werden
/usr/bin/ld: -lX11 kann nicht gefunden werden
collect2: error: ld returned 1 exit status
Hat jemand eine Idee, woran es liegt und was man da machen kann?
Rufus Τ. F. schrieb:> Hoffentlich nicht, sondern>> #include <ode/ode.h>
Huch! Ich habe es korrigiert, jetzt wird dort tatsächlich kein Fehler
mehr angezeigt.
Wenn ich einen Build versuche, kommt folgendes:
11:00:56 **** Incremental Build of configuration Release for project
ODETest2 ****
make all
Building target: ODETest2
Invoking: Cross G++ Linker
g++ -o "ODETest2" ./src/ODETest2.o
./src/ODETest2.o: In Funktion »simLoop(int)«:
ODETest2.cpp:(.text+0x31): Warnung: undefinierter Verweis auf
»dWorldStep«
makefile:45: recipe for target 'ODETest2' failed
ODETest2.cpp:(.text+0x46): Warnung: undefinierter Verweis auf
»dsSetColor«
ODETest2.cpp:(.text+0x52): Warnung: undefinierter Verweis auf
»dBodyGetPosition«
ODETest2.cpp:(.text+0x61): Warnung: undefinierter Verweis auf
»dBodyGetRotation«
./src/ODETest2.o: In Funktion »start()«:
ODETest2.cpp:(.text+0xf): Warnung: undefinierter Verweis auf
»dsSetViewpoint«
./src/ODETest2.o: In Funktion »simLoop(int)«:
ODETest2.cpp:(.text+0x75): Warnung: undefinierter Verweis auf
»dsDrawSphereD«
./src/ODETest2.o: In Funktion »main«:
ODETest2.cpp:(.text.startup+0x2c): Warnung: undefinierter Verweis auf
»dMassSetZero«
ODETest2.cpp:(.text.startup+0x6e): Warnung: undefinierter Verweis auf
»dInitODE«
ODETest2.cpp:(.text.startup+0x73): Warnung: undefinierter Verweis auf
»dWorldCreate«
ODETest2.cpp:(.text.startup+0x92): Warnung: undefinierter Verweis auf
»dWorldSetGravity«
ODETest2.cpp:(.text.startup+0x9e): Warnung: undefinierter Verweis auf
»dBodyCreate«
ODETest2.cpp:(.text.startup+0xad): Warnung: undefinierter Verweis auf
»dMassSetZero«
ODETest2.cpp:(.text.startup+0xc5): Warnung: undefinierter Verweis auf
»dMassSetSphereTotal«
ODETest2.cpp:(.text.startup+0xd4): Warnung: undefinierter Verweis auf
»dBodySetMass«
ODETest2.cpp:(.text.startup+0xf0): Warnung: undefinierter Verweis auf
»dBodySetPosition«
ODETest2.cpp:(.text.startup+0x107): Warnung: undefinierter Verweis auf
»dsSimulationLoop«
ODETest2.cpp:(.text.startup+0x113): Warnung: undefinierter Verweis auf
»dWorldDestroy«
ODETest2.cpp:(.text.startup+0x118): Warnung: undefinierter Verweis auf
»dCloseODE«
collect2: error: ld returned 1 exit status
make: *** [ODETest2] Error 1
11:00:56 Build Failed. 8 errors, 0 warnings. (took 407ms)
Was hat nun nicht geklappt?
Dein Compiler ist glücklich, der Linker aber nicht.
Die "undefinierter-Verweis"-Ausgaben werden vom Linker erzeugt, dem
offensichtlich die Libraries (*.a) bzw. Objektdateien (*.o) fehlen, in
denen die betreffenden Symbole/Funktionen enthalten sind.
Eclipse-Neuling schrieb:> Ich bekomme nach> Eingabe des Befehls
In der Linuxkonsole? Oder unter Eclipse?
Also ich bin nach dem Tutorial (siehe Link oben) vorgegangen und konnte
das Beispielprogramm kompilieren. Auch unter Eclipse.
hier ist die Konsolenausgabe (unter Eclipse):
Wie man sieht wird zuerst ein Objektfile erzeugt. Danach kommt der
Linker zum Einsatz (und der braucht viele zusätzliche Libraries).
Wie gesagt, ich habe zuerst ohne Eclipse, in der Console, kompiliert.
Wie im Tutorial. Dann hatte ich ein Projekt, das funktionierte, und so
habe ich es nach Eclipse kopiert.
Wie habe ich Eclipse konfiguriert?
0) ein c++-Projekt anlegen
1) eine cpp-Datei mit dem Quellcode des Beispielprogramm (siehe
Tutorial) erzeugen. (einfach Quellcode aus dem Beispielprogramm
reinkopieren, nichts ändern. Also kein </ode/blabla.h>)
2) ein Verzeichnis "textures" erzeugen und dorthin alle Texturen
kopieren (die vom Programm benötigt werden). Kopiert habe ich die
Texturen per Hand, in einem "Filemanager". So habe ich Quellcode und
Texturen im gleichen Verzeichnis / Projekt.
3) eine header-Datei texturepath.h erzeugen (wieder den Inhalt
reinkopieren). Und das Verzeichnis für die Texturen anpassen (wie im
Tutorial erwähnt).
#define DRAWSTUFF_TEXTURE_PATH "textures"
4) project->properties->c/c++ build->settings
GCC C++ Compiler:
Hier bei "includes"
/hier/liegt/es/ode-0.16/include
hinzufügen. Ohne -I.
--------------------
GCC C++ Linker:
Hier bei "Libraries"
/hier/liegt/es/ode-0.16/ode/src/.
/hier/lieg/es/ode-0.16/drawstuff/src/.libs
hinzufügen
Bei "Miscellaneous" unter "linker flags" einfach
-lode -ldrawstuff -lGL -lGLU -lX11 -lpthread
eintragen (wie im Tutorial).
Und wenn du direkt auf "GCC C++ Linker" klickst, dann hast du rechts ein
Feld "Expert settings: Command line pattern"
Dort musste ich die Reihenfolge ändern. Mit dieser REihenfolge klappts
bei mir:
${COMMAND} ${INPUTS} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}
Und ich denke du hast alles richtig gemacht und der Fehler liegt im
letzten Absatz. Die Patternreihenfolge muss wohl geändert werden.
Aber wie gesagt: Ich habe zuerst die Konsole benutzt. Dann wusste ich
dass alles funktioniert und dann kann man auch mit Eclipse spielen.
Rufus Τ. F. schrieb:> Da ist jetzt ein Leerzeichen, aber an falscher Stelle.>> Besser dürfte das hier sein:> g++ -o my_demo demo_buggy.o -lode -ldrawstuff -L> ~/ode-0.13.1/ode/src/.libs -L ~/ode-0.13.1/drawstuff/src/.libs -lGL> -lGLU -lX11 -lpthread
Ja, Danke!
zitter_ned_aso schrieb:> GCC C++ Linker:>> Hier bei "Libraries">> /hier/liegt/es/ode-0.16/ode/src/.> /hier/lieg/es/ode-0.16/drawstuff/src/.libs>> hinzufügen
Also im unteren Textfeld (Library search path (-L))
zitter_ned_aso schrieb:> In der Linuxkonsole? Oder unter Eclipse?
In der Linux-Konsole.
zitter_ned_aso schrieb:> Wie habe ich Eclipse konfiguriert?
Das habe ich jetzt so gemacht, und es wurden wieder die Linker nicht
gefunden.
zitter_ned_aso schrieb:> Wahrscheinlich hast du keine passenden Libs auf dem Rechner. Einfach> nachinstallieren>> (wird so ähnlich sein wie hier:>> http://www.codebind.com/linux-tutorials/install-opengl-ubuntu-linux/)
Nach Befolgen dieser Anleitung wird nur noch -ldrawstuff nicht gefunden
(sowohl im Terminal, als auch in Eclipse). Muss ich das auch
nachinstallieren...?
Eclipse-Neuling schrieb:> nur noch -ldrawstuff nicht gefunden
DrawStuff nachinstallieren? Ähm, hast du es nicht? Ich habe das
ODE-Packet von
https://bitbucket.org/odedevs/ode/downloads/
runtergeladen und entpackt. Da war dann alles dabei. DrawStuff ist ja
die GUI (für die Beispiele).
Danach ./configure und make
(wie hier beschrieben:
http://www.espore.co.uk/archives/330)
Hast du diese Engine mit "apt-get install ..." (oder so) installiert?
Du übergibt doch ein "drawstuff"-Verzeichnis an den Linker mit allen
Libs. (/hier/lieg/es/ode-0.16/drawstuff/src/.libs) Hast du es nicht?
Eclipse-Neuling schrieb:> .libs existiert, ist aber leer. Wie sieht es bei dir aus?
Bei mir ist das Verzeichnis nicht leer und enthält zwei Dateien
(libdrawstuff.a libdrawstuff.la).
Eclipse-Neuling schrieb:> Installiert habe ich es wie auf folgender Seite beschrieben:>> http://wiki.icub.org/wiki/Linux:_Installing_ODE
und da steht:
More optional parameters:
--disable-drawstuff --disable-demos
hast du diese Parameter benutzt? Anscheinend wurden bei dir die Libs für
die GUI nicht erzeugt.
zitter_ned_aso schrieb:> More optional parameters:>> --disable-drawstuff --disable-demos>> hast du diese Parameter benutzt?
Nein, ich habe den Befehl
./configure --prefix=/home/user/ode-0.13.1/build
--exec-prefix=/home/user/ode-0.13.1/build --enable-libccd
--enable-double-precision --enable-shared
verwendet. Ich habe jetzt noch mal ./configure, make und make install
ausgeführt wie in
zitter_ned_aso schrieb:> Danach ./configure und make>> (wie hier beschrieben:> http://www.espore.co.uk/archives/330)
Die .lib-Datei ist immer noch leer...
OpenGL ist installiert? Du brauchst diese Lib für die GUI.
Lege einfach ein neues Verzeichnis an. Entpacke dort das ODE-Packet und
kompiliere es mit configure + make (siehe Tutorial). Dann übergebe
dieses Verzeichnis an den Linker. Bei mir funktioniert's.
Eclipse-Neuling schrieb:> Die .lib-Datei ist immer noch leer...
Das ist ein (verstecktes) Verzeichnis unter Linux. Keine Datei.
Eclipse-Neuling schrieb:> und make install> ausgeführt
make install wurde dort gar nicht ausgeführt. (habe ich auch nicht
gemacht)
Rufus Τ. F. schrieb:> Besser dürfte das hier sein:> g++ -o my_demo demo_buggy.o -lode -ldrawstuff -L> ~/ode-0.13.1/ode/src/.libs -L ~/ode-0.13.1/drawstuff/src/.libs -lGL> -lGLU -lX11 -lpthread
Wie im Tutorial. Nur halt die Verzeichnisse anpassen. Bei dir heißen die
ja anders.
Momentan hast du ja keine Lib fürs GUI. Und die bekommst du nur wenn du
das ODE-Packet sauber kompilierst.
Im Prinzip braucht dieses "drawstuff" gar nicht. Das ist ja nur für die
Beispiele da.
Du willst ja die Engine in deinen Projekten benutzen. Andererseits sieht
es mit der Doku für diese Engine ziemlich mager aus. Als Tutorials
werden die mitgelieferten Beispiel angeboten. Also ist es gut wenn
"drawstuff" doch benutzt werden kann.
http://ode.org/wiki/index.php?title=Manual#Install_and_Use
In der Dokumantation steht ja
Before You Build
Before you start, you should know that there are two parts to ODE. There
is "ODE", which is the physics and collision detection library. Then
there is "DrawStuff", a simple wrapper over Win32/X11 and OpenGL which
is used for the demo applications.
---
Also wird DrawStuff nur für die Beispiele benötigt und dann noch die
Libs für OpenGL und X11 (für die Grafik + GUI).
Im Prinzip bekommst du ja nach dem Aufruf von .configure eine
Rückmeldung. Dort müsste eigentlich stehen dass die Library XYZ fehlt.
Vielleicht fehlt noch die X11-Lib (libx11-dev oder so).
zitter_ned_aso schrieb:>> g++ -o my_demo demo_buggy.o -lode -ldrawstuff -L>> ~/ode-0.13.1/ode/src/.libs -L ~/ode-0.13.1/drawstuff/src/.libs -lGL>> -lGLU -lX11 -lpthread>> Wie im Tutorial. Nur halt die Verzeichnisse anpassen. Bei dir heißen die> ja anders.
Wenn ich das eingebe, kommt wieder der Fehler "-ldrawstuff kann nicht
gefunden werden"
zitter_ned_aso schrieb:> Momentan hast du ja keine Lib fürs GUI. Und die bekommst du nur wenn du> das ODE-Packet sauber kompilierst.
Ist das Kompilieren das mit ./configure und make?
Eclipse-Neuling schrieb:> Ist das Kompilieren das mit ./configure und make?
Ja.
ich die Datei entpackt. Dann im Verzeichnis den Befehl .configure
eingegeben.
Dieses Tool prüft ob dein Systen alle benotigten Bibliotheken hat.
Das sind bei mir die letzten Ausgabezeilen in der Konsole von
.configure:
1
Configuration:
2
Buildsystemtype:x86_64-pc-linux-gnu
3
Hostsystemtype:x86_64-pc-linux-gnu
4
Usedoubleprecision:no
5
6
Usedrawstuff:X11
7
8
Demosenabled:yes
9
UseOPCODE:yes
10
UseGIMPACT:no
11
Uselibccd:no
12
Customcolliders:
13
cylinder-cylinder:none
14
box-cylinder:default
15
capsule-cylinder:none
16
usw.
Also bei mir läuft's. Die Beispiele benötigen zusätzliche Bibliotheken.
Das habe ich oben schon erwähnt. Wenn du die hast, dann müsste es
eigentlich funktionieren. Ich mache ja auch nichts anderes.
zitter_ned_aso schrieb:> Use drawstuff: X11
Ah, bei mir steht dort none anstatt X11 (nach Ausführen von
./configure). Bei ./configure --with-drawstuff=X11 kommt das gleiche
raus. Kann man noch irgendwie anders einstellen, dass drawstuff mit
installiert wird?
zitter_ned_aso schrieb:> Vielleicht fehlt noch die X11-Lib (libx11-dev oder so)
Ich habe dir doch schon geschrieben, dass die X11-Lib benötigt wird.
Unter Ubuntu könntest du
sudo apt-get install libx11-dev
ausprobieren
(oder googeln)
Und dann noch mal ./configure und schauen ob
---
Use drawstuff: X11
---
erscheint.
Eclipse-Neuling schrieb:> Kann man noch irgendwie anders einstellen, dass drawstuff mit> installiert wird?zitter_ned_aso schrieb:> http://ode.org/wiki/index.php?title=Manual#Install_and_Use>> In der Dokumantation steht ja>> Before You Build>> Before you start, you should know that there are two parts to ODE. There> is "ODE", which is the physics and collision detection library. Then> there is "DrawStuff", a simple wrapper over Win32/X11 and OpenGL which> is used for the demo applications.
ODE-Engine nutzt OpenGL- und X11-Bibliotheken (für die Grafikausgabe bei
Beispielprogrammen). Du musst sie auf deinem System haben. Sie haben
nichts mit ODE zu tun und werden von ODE nicht mitgeliefert. Du hast
auch schon "DrawStuff" auf dem Rechner. Es funktioniert nicht weil dir
die Libs für die GUI fehlen.
Die Fehlermeldungen
zitter_ned_aso schrieb:>> /usr/bin/ld: -lGL kann nicht gefunden werden>> /usr/bin/ld: -lGLU kann nicht gefunden werden
sind ja weg. Anscheinend hast du OpenGL-Libs installiert. Jetzt mach das
gleiche mit X11-Libs.
zitter_ned_aso schrieb:> sudo apt-get install libx11-dev
Im Terminal stand daraufhin
libx11-dev ist schon die neueste Version (2:1.6.4-3ubuntu0.1).
libx11-dev wurde als manuell installiert festgelegt.
Ich habe gegoogelt und diesen Befehl gefunden und ausprobiert:
sudo apt-get install xorg openbox
Es kam keine Fehlermeldung, also müsste X11 doch eigentlich installiert
sein.
Bei ./configure steht bei Drawstuff aber immer noch none
das ist (bei mir) ein Teil der Ausgabe von ./configure:
...
...
...
checking which drawstuff lib to build... X11
checking for X11... yes
checking for GL/gl.h... yes
checking for GL/glu.h... yes
checking for GL/glext.h... yes
checking for main in -lGL... yes
...
...
...
Wie du siehst, wird es nach X11 gesucht. Und (bei mir) auch gefunden.
Wird denn bei dir X11 von ./configure-Skript gefunden?
Und noch was:
./configure --help
gibt alle möglichen Parametern aus.
Versuche explizit mit beiden Parametern
--with-drawstuff=X11 --enable-demos
zu arbeiten.
Also
./configure --with-drawstuff=X11 --enable-demos
zitter_ned_aso schrieb:> ./configure --with-drawstuff=X11 --enable-demos
Das habe ich eingegeben.
zitter_ned_aso schrieb:> checking which drawstuff lib to build... X11>> checking for X11... yes
Bei mir steht:
...
checking which drawstuff lib to build... X11
checking for X11... no
checking if demos should be built... no
configure: WARNING: Demos will not be built because OpenGL doesn't seem
to work
...
zitter_ned_aso schrieb:> checking for GL/gl.h... yes> checking for GL/glu.h... yes> checking for GL/glext.h... yes> checking for main in -lGL... yes
Diese Zeilen habe ich nicht gefunden
Ich habe die Befehle mal eben ausprobiert.
zitter_ned_aso schrieb:> sudo apt-get install freeglut3 freeglut3-dbg freeglut3-dev
E: Paket freeglut3-dbg kann nicht gefunden werden
zitter_ned_aso schrieb:> sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev
libglu1-mesa-dev ist schon die neueste Version
freeglut3-dev ist schon die neueste Version
mesa-common-dev ist schon die neueste Version
Hast du noch eine Idee dazu?