2012-02-05 10 views
5

Używam some tutorials on OpenGL, które używają FreeGLUT.Czy można zbudować FreeGLUT na Mac OS X?

Apparently ten sposób można zbudować i zainstalować go na Mac:

CPPFLAGS="-I/usr/X11R6/include" ./configure --prefix="${PWD}/../" 
make 
make install 

Niestety to na własną rękę daje mi błąd, gdy zrobić komendę make: Undefined symbols for architecture x86_64

Po wykonaniu odrobinę pracy Zauważyłem, że poprawa w pierwszej linii to:

CPPFLAGS="-I/usr/X11R6/include -L/usr/X11R6/lib" LDFLAGS="-L/usr/X11R6/lib" ./configure --prefix="${PWD}/../" 

Niestety, gdy robięKomendaja wciąż otrzymuję błąd:

gcc -DHAVE_CONFIG_H -I. -I../../.. -I/usr/X11R6/include -L/usr/X11R6/lib -I../../../include -g -O2 -Wall -pedantic -MT smooth_opengl3-smooth_opengl3.o -MD -MP -MF .deps/smooth_opengl3-smooth_opengl3.Tpo -c -o smooth_opengl3-smooth_opengl3.o `test -f 'smooth_opengl3.c' || echo './'`smooth_opengl3.c 
smooth_opengl3.c:101: error: redefinition of typedef ‘PFNGLGENBUFFERSPROC’ 
/usr/X11R6/include/GL/glext.h:5080: error: previous declaration of ‘PFNGLGENBUFFERSPROC’ was here 
smooth_opengl3.c:102: error: redefinition of typedef ‘PFNGLBINDBUFFERPROC’ 
/usr/X11R6/include/GL/glext.h:5078: error: previous declaration of ‘PFNGLBINDBUFFERPROC’ was here 
smooth_opengl3.c:103: error: redefinition of typedef ‘PFNGLBUFFERDATAPROC’ 
/usr/X11R6/include/GL/glext.h:5082: error: previous declaration of ‘PFNGLBUFFERDATAPROC’ was here 
smooth_opengl3.c:104: error: redefinition of typedef ‘PFNGLCREATESHADERPROC’ 
/usr/X11R6/include/GL/glext.h:5197: error: previous declaration of ‘PFNGLCREATESHADERPROC’ was here 
smooth_opengl3.c:105: error: redefinition of typedef ‘PFNGLSHADERSOURCEPROC’ 
/usr/X11R6/include/GL/glext.h:5222: error: previous declaration of ‘PFNGLSHADERSOURCEPROC’ was here 
smooth_opengl3.c:106: error: redefinition of typedef ‘PFNGLCOMPILESHADERPROC’ 
/usr/X11R6/include/GL/glext.h:5195: error: previous declaration of ‘PFNGLCOMPILESHADERPROC’ was here 
smooth_opengl3.c:107: error: redefinition of typedef ‘PFNGLCREATEPROGRAMPROC’ 
/usr/X11R6/include/GL/glext.h:5196: error: previous declaration of ‘PFNGLCREATEPROGRAMPROC’ was here 
smooth_opengl3.c:108: error: redefinition of typedef ‘PFNGLATTACHSHADERPROC’ 
/usr/X11R6/include/GL/glext.h:5193: error: previous declaration of ‘PFNGLATTACHSHADERPROC’ was here 
smooth_opengl3.c:109: error: redefinition of typedef ‘PFNGLLINKPROGRAMPROC’ 
/usr/X11R6/include/GL/glext.h:5221: error: previous declaration of ‘PFNGLLINKPROGRAMPROC’ was here 
smooth_opengl3.c:110: error: redefinition of typedef ‘PFNGLUSEPROGRAMPROC’ 
/usr/X11R6/include/GL/glext.h:5223: error: previous declaration of ‘PFNGLUSEPROGRAMPROC’ was here 
smooth_opengl3.c:111: error: redefinition of typedef ‘PFNGLGETSHADERIVPROC’ 
/usr/X11R6/include/GL/glext.h:5209: error: previous declaration of ‘PFNGLGETSHADERIVPROC’ was here 
smooth_opengl3.c:112: error: redefinition of typedef ‘PFNGLGETSHADERINFOLOGPROC’ 
/usr/X11R6/include/GL/glext.h:5210: error: previous declaration of ‘PFNGLGETSHADERINFOLOGPROC’ was here 
smooth_opengl3.c:113: error: redefinition of typedef ‘PFNGLGETPROGRAMIVPROC’ 
/usr/X11R6/include/GL/glext.h:5207: error: previous declaration of ‘PFNGLGETPROGRAMIVPROC’ was here 
smooth_opengl3.c:114: error: redefinition of typedef ‘PFNGLGETPROGRAMINFOLOGPROC’ 
/usr/X11R6/include/GL/glext.h:5208: error: previous declaration of ‘PFNGLGETPROGRAMINFOLOGPROC’ was here 
smooth_opengl3.c:115: error: redefinition of typedef ‘PFNGLGETATTRIBLOCATIONPROC’ 
/usr/X11R6/include/GL/glext.h:5206: error: previous declaration of ‘PFNGLGETATTRIBLOCATIONPROC’ was here 
smooth_opengl3.c:116: error: redefinition of typedef ‘PFNGLVERTEXATTRIBPOINTERPROC’ 
/usr/X11R6/include/GL/glext.h:5280: error: previous declaration of ‘PFNGLVERTEXATTRIBPOINTERPROC’ was here 
smooth_opengl3.c:117: error: redefinition of typedef ‘PFNGLENABLEVERTEXATTRIBARRAYPROC’ 
/usr/X11R6/include/GL/glext.h:5202: error: previous declaration of ‘PFNGLENABLEVERTEXATTRIBARRAYPROC’ was here 
smooth_opengl3.c:118: error: redefinition of typedef ‘PFNGLGETUNIFORMLOCATIONPROC’ 
/usr/X11R6/include/GL/glext.h:5212: error: previous declaration of ‘PFNGLGETUNIFORMLOCATIONPROC’ was here 
smooth_opengl3.c:119: error: redefinition of typedef ‘PFNGLUNIFORMMATRIX4FVPROC’ 
/usr/X11R6/include/GL/glext.h:5242: error: previous declaration of ‘PFNGLUNIFORMMATRIX4FVPROC’ was here 
make[4]: *** [smooth_opengl3-smooth_opengl3.o] Error 1 
make[3]: *** [all-recursive] Error 1 
make[2]: *** [all-recursive] Error 1 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 

Zostało documented on the net before, ale rozwiązanie nie jest tak naprawdę wszystko, pomocne w tym przypadku. Próbowałem również zamienić go na GLUT.framwork, który pochodzi z OS X, ale przykłady używają funkcji specyficznych dla FreeGLUT.

+0

Ok, mam trochę dalej w tym. Użycie 'CPPFLAGS =" - I/usr/X11R6/include -L/usr/X11R6/lib "./configure --prefix =" $ {PWD} /../ "' usuwa błąd "Niezdefiniowane symbole". Ale teraz otrzymuję 'ld: biblioteka nie znaleziona dla -lGL' \' collect2: ld zwróciła 1 status wyjścia' \ 'make [2]: *** [libglut.la] Błąd 1' \' make [1]: * ** [all-recursive] Błąd 1'/'make: *** [all] Error 2' – bjz

+1

Może powinieneś również sprawdzić z LDFLAGS,' -L/usr/X11R6/lib' jest potrzebny. – ZhangChn

+0

Ooo dzięki. Ok, więc użyłem 'CPPFLAGS =" - I/usr/X11R6/include -L/usr/X11R6/lib "LDFLAGS =" - L/usr/X11R6/lib "./configure --prefix =" $ {PWD}/../ "' i pozbyłem się poprzedniego błędu. Teraz otrzymuję cały ładunek błędów wzdłuż linii 'smooth_opengl3.c: 101: error: redefinition of typedef 'PFNGLGENBUFFERSPROC'' \' /usr/X11R6/include/GL/glext.h:5080: error: previous declaration of "PFNGLGENBUFFERSPROC" był tutaj " – bjz

Odpowiedz

5

XQuartz 2.7.2 zamienione na freeglut (2.8.0) zamiast starego MesaGLUT. Pod warunkiem, że masz OS X w wersji 10.6.3 lub nowszej, możesz po prostu zainstalować XQuartz 2.7.2 lub nowszy. Zobacz:

+0

Dla tych, którzy zastanawiają się, jak skonfigurować freeglut w XCode, zobacz http://lazyfoo.net/tutorials/OpenGL/01_hello_opengl/mac/xcode/index.php – zhangyoufu

4

It was suggested na liście mailingowej Xquartz, że demo freeglut nie zgadza się z dwukrotnym zadeklarowaniem tych PFN * PROC.

Po prostu komentując tę ​​podwójną definicję ze strony smooth_opengl3.c, swobodny przeskok przejdzie fazę kompilacji. Jednak z mojego doświadczenia nie wynikałoby to z błędu GLSL.

Został również zasugerował, że GLUT framework should be used na Mac OS X.

+0

Niestety, struktura GLUT OSX nie obsługuje OpenGL 3.2. –

1

its pracujący dla mnie z następującymi parametrami do skonfigurowania:

./configure CFLAGS="-I/usr/X11/include/X11/extensions -L/usr/X11/lib" LIBS="-lXrandr -lXxf86vm -lXi" --with-x --x-includes=/usr/X11/include