mikrocontroller.net

Forum: PC-Programmierung Eclipse: ode.h wird nicht gefunden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
#include <ode.h>  
der Fehler
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?

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke du musst die datei mit "" includen, damit der compiler in 
deinen Verzeichnissen sucht.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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):


19:20:13 **** Incremental Build of configuration Debug for project ODETest2 ****
make all 
Building file: ../src/ODETest2.cpp
Invoking: Cross G++ Compiler
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
 
Building target: ODETest2
Invoking: Cross G++ Linker
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"
/usr/bin/ld: -lode.h kann nicht gefunden werden
makefile:45: recipe for target 'ODETest2' failed
/usr/bin/ld: -ldrawstuff.h kann nicht gefunden werden
collect2: error: ld returned 1 exit status
make: *** [ODETest2] Error 1

19:20:13 Build Failed. 4 errors, 0 warnings. (took 465ms)

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?)

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-l"ode.h"

Da steht das l doch dann für LIB. Also *.o und *.a Files. Wenn man die 
header inklusive Pfade übergibt klappt es offensichtlich ja.

Autor: Eclipse-Neuling (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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
fatal error: ode.h: Datei oder Verzeichnis nicht gefunden

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch Moderator
Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist es nicht einfacher erst mal in der Konsole zu kompillieren?

Und dann die Pfadangaben in Eclipse übernehmen? (wenn alles 
funktioniert)

Autor: Micha (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Eine Ode an Eclipse

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin nach dieser Anleitung

http://www.espore.co.uk/archives/330

vorgegangen und konnte ein Beispiel problemlos kompilieren.

Beim zweiten Befehl

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

fehlt zwischen
-lX11-lpthread
 ein Leerzeichen. 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


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.

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
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

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
#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.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Eclipse-Neuling schrieb:
> Im cpp-Programm steht
> #include </ode/ode.h>

Hoffentlich nicht, sondern

#include <ode/ode.h>

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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):
make all 
Building file: ../ode_test.cpp
Invoking: GCC C++ Compiler
g++ -I/home/pc/Downloads/delete/ode-0.16/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"ode_test.d" -MT"ode_test.o" -o "ode_test.o" "../ode_test.cpp"
Finished building: ../ode_test.cpp
 
Building target: ode_test
Invoking: GCC C++ Linker
g++   ./ode_test.o    -L/home/pc/Downloads/delete/ode-0.16/ode/src/.libs -L/home/intpc/Downloads/delete/ode-0.16/drawstuff/src/.libs -lode -ldrawstuff -lGL -lGLU -lX11 -lpthread -o "ode_test"
Finished building target: ode_test

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.

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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))

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eclipse-Neuling schrieb:
> /usr/bin/ld: -lGL kann nicht gefunden werden
> /usr/bin/ld: -lGLU kann nicht gefunden werden

Ach so. Er benutzt OpenGL für die grafische Ausgabe.

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/)

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zitter_ned_aso schrieb:
> Ich habe das
> ODE-Packet von
>
> https://bitbucket.org/odedevs/ode/downloads/
>
> runtergeladen und entpackt.

Dort habe ich es auch her.

Installiert habe ich es wie auf folgender Seite beschrieben:

http://wiki.icub.org/wiki/Linux:_Installing_ODE


zitter_ned_aso schrieb:
> 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?

.libs existiert, ist aber leer. Wie sieht es bei dir aus?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zitter_ned_aso schrieb:
> Dann übergebe
> dieses Verzeichnis an den Linker.

Wie geht das?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
Configuration:
  Build  system type:      x86_64-pc-linux-gnu
  Host   system type:      x86_64-pc-linux-gnu
  Use double precision:    no
 
  Use drawstuff:           X11

  Demos enabled:           yes
  Use OPCODE:              yes
  Use GIMPACT:             no
  Use libccd:              no
  Custom colliders:
        cylinder-cylinder: none
        box-cylinder:      default
        capsule-cylinder:  none
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.

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eclipse-Neuling schrieb:
> configure: WARNING: Demos will not be built because OpenGL doesn't seem
> to work


hast du denn OpenGL auf deinem Rechner?


sudo apt-get install freeglut3 freeglut3-dbg freeglut3-dev

http://cell0907.blogspot.com/2014/11/ode-installation-in-linux-mint_15.html

(und auch unter diesem Link wird nur ./configure, make, make install 
eingegeben)

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.codebind.com/linux-tutorials/install-opengl-ubuntu-linux/

sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eclipse-Neuling schrieb:
> checking for X11... no

Ich würde sagen das ist dein Problem. Aber was da noch fehlt, das kann 
ich nicht sagen.

Autor: Eclipse-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zitter_ned_aso schrieb:
> Ich würde sagen das ist dein Problem.

Alles klar.

Dann vielen Dank für die viele Hilfe! Das hat mir sehr weitergeholfen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.