freeglut mit mingw selber kompilieren



  • Ich versuche zur Zeit freeglut per MinGW (und MinGW Developer Studio) selbst zu erstellen. Leider erfolglos. Der Linker meckert immer wieder über 'undefined reference'. Theoretisch hieße das ja, dass man vergessen hat dem Linker eine .a/.lib mit auf den Weg zu geben. Nun sollen die ja aber erst erstellt werden. Während des Kompilierens wird zwar eine .a erstellt, wenn ich die mitlinke wird erst über 'multiple definition' und dann über 'undefined reference' geklagt (wie kann das überhaupt sein; zwar zuoft definiert, dann aber trotzdem nicht da).

    MfG mabi



  • bißchen wenig info

    hast du richtig configuriert und die compileroptionen gesetzt?
    http://freeglut.sourceforge.net/docs/install.php

    hier gibts noch eine vorläuferversion vorkompiliert für windows
    http://goanna.cs.rmit.edu.au/~vchau/Interactive3D/freeglut-2.2.0.zip



  • Sehr viel mehr Info kann ich auch nicht geben.
    Der Compiler hat als einzige zusätzliche Option das include-Verzeichnis von freeglut.
    Konfigurieren über das configure-Skript geht in Win leider nicht.

    MfG mabi

    Nachtrag:
    Bei den Warnungen des Compilers findet sich

    src\freeglut_callbacks.c:293: warning: 'glutWindowStatusFunc' defined locally after being referenced with dllimport linkage

    und das gleiche nochmal für die 'glutGetProcAddress'.
    Die undefined references sind allesamt freeglut-Funktionen (soweit ich das überblicke bei 191 fehlern).



  • hi

    grad mal ausprobiert. das visual studio 6 (die schülerversion, kostenlos in jedem bibliotheksbuch zu finden) kompiliert dir das ganze (starten über .dsw file) ohne probleme durch und fabriziert eine lib mit passender dll.

    auch ein gcc müsste das hinkriegen, wichtig: du musst den configurationsfile anpassen. cygwin bietet sich an.

    lese den install file. dort steht alles beschrieben.
    für das visual studio den win32 file.

    es gibt wohl noch ein forum, in dem über andere compiler geredet wird.

    solche dinge sind oft an compiler gebunden, und man muss selber hand anlegen, wenn man sie für andere compiler handhabbar machen möchte.

    erstma



  • Das configure Skript läuft mit MSYS durch, dann will er aber irgendwann cygpath haben. Du kannst also entweder das configure-Skript so bearbeiten, dass es auch ohne cygpath funktioniert oder du installierst Cygwin.



  • Das configure Skript läuft mit MSYS tatsächlich durch (bei mir auch ohne einen cygpath zu wollen), brach aber trotzdem mit obigen dllimport linkage ab. Durch Aufrufen mit "configure --build=mingw32" läßt sich das aber beheben. Funktionieren tut's damit noch lange nicht.
    Die neue Abbruchmeldung lautet:

    gcc -g -O2 -o CallbackMaker.exe CallbackMaker-CallbackMaker.o -Wl,--export-dynamic ../../../src/.libs/libglut.a -lm -lGL -lGLU -lXext -lX11
    f:\entwicklung\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lGL

    Zuerst dachte ich ja, gemeint ist die gl.h aus (mingwpath)\include\GL oder das Verzeichnis (als zusätzliches include-Verzeichnis), aber die Compileroption -l gibt doch eigentlich libs an und keine Header (und schon gar nicht Verzeichnisse). Den Pfad als Option an configure zu übergeben oder schlicht in den Systempfad zu übernehmen, hat dann auch nichts gebracht.
    Etwas weiter über der Abbruchmeldung findet sich:

    make[3]: Entering directory /g/c++/freeglut-2.4.0/include/GL' make[3]: Nothing to be done forall'.
    make[3]: Leaving directory /g/c++/freeglut-2.4.0/include/GL' make[3]: Entering directory/g/c++/freeglut-2.4.0/include'
    make[3]: Nothing to be done for `all-am'.

    Kann es sein, dass er aus irgendwelchen Gründen an dieser Stelle die GL.lib nicht kompiliert und sie deswegen fehlt? Falls das auch noch in den configure Optionen habe ich es jedenfalls noch nict gefunden

    Ich versuche es auf jeden Fall weiter, falls jemanden etwas einfällt...

    MfG mabi

    PS: Hat es denn schon mal jemand geschafft, freeglut nur mit "configure" und "make all" über MSYS zu kompilieren?


Log in to reply