2012-02-05 3 views
5

I делаю some tutorials on OpenGL которые используют FreeGLUT.Возможно ли построить FreeGLUT на Mac OS X?

Apparently это то, как вы строите и установить его на макинтош:

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

К сожалению, это само по себе дает мне ошибку, когда я делаю make команду: Undefined symbols for architecture x86_64

После выполнения ABIT работы Я обнаружил, что улучшение на первой линии:

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

к сожалению, когда я делаю make команда Я все еще получаю сообщение об ошибке:

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 

Это был documented on the net before, но решение на самом деле не все, что полезно в этом случае. Я также попытался заменить его для GLUT.framwork, который поставляется с OS X, но в примерах используются специальные функции FreeGLUT.

+0

Хорошо, у меня есть немного дальше в этом. Использование 'CPPFLAGS =" - I/usr/X11R6/include -L/usr/X11R6/lib "./configure --prefix =" $ {PWD} /../ "' избавляется от ошибки Undefined symbols. Но теперь я получаю 'ld: библиотека не найдена для -lGL' \' collect2: ld возвращен 1 статус выхода' \ 'make [2]: *** [libglut.la] Ошибка 1' \' make [1]: * ** [all-recursive] Ошибка 1'/'make: *** [all] Ошибка 2' – bjz

+1

Возможно, вам также следует проверить с помощью LDFLAGS,' -L/usr/X11R6/lib'. – ZhangChn

+0

Ох спасибо. Итак, я использовал 'CPPFLAGS =" - I/usr/X11R6/include -L/usr/X11R6/lib "LDFLAGS =" - L/usr/X11R6/lib "./configure --prefix =" $ {PWD}/../ ", и я избавился от предыдущей ошибки. Теперь я получаю всю ошибку ошибок в строках 'smooth_opengl3.c: 101: ошибка: переопределение typedef 'PFNGLGENBUFFERSPROC'' \ /usr/X11R6/include/GL/glext.h:5080: ошибка: предыдущее объявление 'PFNGLGENBUFFERSPROC' был здесь ' – bjz

ответ

5

XQuartz 2.7.2 Сменная FreeGLUT (2.8.0) вместо старого MesaGLUT. Таким образом, если у вас OS X версии 10.6.3 или новее, вы можете просто установить XQuartz 2.7.2 или новее. См:

+0

Для тех, кто задается вопросом, как настроить freeglut в XCode, см. Http://lazyfoo.net/tutorials/OpenGL/01_hello_opengl/mac/xcode/index.php – zhangyoufu

4

It was suggested в списке рассылки Xquartz, что демо-версия freeglut неверна, чтобы объявить эти PFN * PROC дважды.

Итак, просто комментируя эти двойные определения из smooth_opengl3.c, свободный избыток прошел фазу компиляции. Однако, по моему опыту, он не запустится и не даст некоторую ошибку в GLSL.

Было также отмечено, что GLUT framework should be used на Mac OS X.

+0

К сожалению, инфраструктура GLUT OSX не поддерживает OpenGL 3.2. –

1

подмигнули работает для меня со следующими параметрами для настройки:

./configure CFLAGS="-I/usr/X11/include/X11/extensions -L/usr/X11/lib" LIBS="-lXrandr -lXxf86vm -lXi" --with-x --x-includes=/usr/X11/include 
Смежные вопросы