[PyQt] Unable to compile PyQt on 10.5.1 (fails while linking)

Phil Thompson phil at riverbankcomputing.co.uk
Thu Nov 29 13:13:37 GMT 2007


On Wednesday 28 November 2007, Brian Landsberger wrote:
> Hello all,
>
> 	I'm new to the list and found it when I encountered problems trying
> compile PyQT on my Powerbook G4. I'm running a fresh copy of 10.5 then
> upgraded to 10.5.1. As this thread indicates:
>
> http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg12139.html
>
> I looked into the symlink mentioned, but apparently it's already set
> up - although curiously backwards from what the about thread indicates.
>
> brian at bjl-pbook ~ $ ls -l /System/Library/Frameworks/Python.framework/
> Versions/2.5/lib/python2.5/site-packages
> lrwxr-xr-x  1 root  wheel  33 Nov 27 09:54 /System/Library/Frameworks/
> Python.framework/Versions/2.5/lib/python2.5/site-packages -> /Library/
> Python/2.5/site-packages
>
> brian at bjl-pbook ~ $ ls -l /Library/Python/2.5/site-packages/
> total 480
> drwxr-xr-x  16 root   admin    544 Nov 27 16:09 PyQt4
> -rw-rw-r--   1 root   admin    119 Oct  5 21:11 README
> -rwxr-xr-x   1 root   admin  78392 Nov 26 15:51 sip.so
> -rw-r--r--   1 root   admin  83263 Nov 26 15:51 sipconfig.py
> -rw-r--r--   1 brian  admin  65968 Nov 26 15:51 sipconfig.pyc
> -rw-r--r--@  1 root   admin   3332 Nov 26 15:51 sipdistutils.py
>
>
> I've re-compiled QT, but I still get the below error, also this only
> happens when compiling the OpenGL module not when compiling any other
> PyQT module (say QtSvg or QtSql).
>
> c++ -headerpad_max_install_names -bundle -F/System/Library/Frameworks -
> framework Python -o QtOpenGL.so sipQtOpenGLcmodule.o
> sipQtOpenGLQGLPixelBuffer.o sipQtOpenGLQGLFramebufferObject.o
> sipQtOpenGLQGLColormap.o sipQtOpenGLQGLWidget.o
> sipQtOpenGLQGLContext.o sipQtOpenGLQGLFormatOpenGLVersionFlags.o
> sipQtOpenGLQGLFormat.o sipQtOpenGLQGLFormatOptions.o sipQtOpenGLQGL.o -
> F/Library/Frameworks -L/Library/Frameworks -framework QtOpenGL -
> framework OpenGL -framework AGL -framework QtGui -framework Carbon -
> framework AppKit -framework QtCore -lz -lm -liconv -framework
> ApplicationServices -framework QtGui -framework Carbon -framework
> AppKit -framework QtCore -lz -lm -liconv -framework
> ApplicationServices -framework QtCore -lz -lm -liconv -framework
> ApplicationServices -framework OpenGL -framework AGL
> Undefined symbols:
>    "QGLContext::deleteTexture(unsigned int)", referenced from:
>        _meth_QGLContext_deleteTexture in sipQtOpenGLQGLContext.o
>    "QGLWidget::bindTexture(QImage const&, unsigned int, int)",
> referenced from:
>        _meth_QGLWidget_bindTexture in sipQtOpenGLQGLWidget.o
>    "QGLFramebufferObject::QGLFramebufferObject(QSize const&,
> QGLFramebufferObject::Attachment, unsigned int, unsigned int)",
> referenced from:
>        sipQGLFramebufferObject::sipQGLFramebufferObject(QSize const&,
> QGLFramebufferObject::Attachment, unsigned int, unsigned int)in
> sipQtOpenGLQGLFramebufferObject.o
>    "QGLContext::bindTexture(QPixmap const&, unsigned int, int)",
> referenced from:
>        _meth_QGLContext_bindTexture in sipQtOpenGLQGLContext.o
>    "QGLPixelBuffer::bindToDynamicTexture(unsigned int)", referenced
> from:
>        _meth_QGLPixelBuffer_bindToDynamicTexture in
> sipQtOpenGLQGLPixelBuffer.o
>    "QGLPixelBuffer::bindTexture(QPixmap const&, unsigned int)",
> referenced from:
>        _meth_QGLPixelBuffer_bindTexture in sipQtOpenGLQGLPixelBuffer.o
>    "QGLPixelBuffer::deleteTexture(unsigned int)", referenced from:
>        _meth_QGLPixelBuffer_deleteTexture in sipQtOpenGLQGLPixelBuffer.o
>    "QGLContext::bindTexture(QImage const&, unsigned int, int)",
> referenced from:
>        _meth_QGLContext_bindTexture in sipQtOpenGLQGLContext.o
>    "QGLPixelBuffer::bindTexture(QImage const&, unsigned int)",
> referenced from:
>        _meth_QGLPixelBuffer_bindTexture in sipQtOpenGLQGLPixelBuffer.o
>    "QGLFramebufferObject::QGLFramebufferObject(int, int,
> QGLFramebufferObject::Attachment, unsigned int, unsigned int)",
> referenced from:
>        sipQGLFramebufferObject::sipQGLFramebufferObject(int, int,
> QGLFramebufferObject::Attachment, unsigned int, unsigned int)in
> sipQtOpenGLQGLFramebufferObject.o
>    "QGLWidget::deleteTexture(unsigned int)", referenced from:
>        _meth_QGLWidget_deleteTexture in sipQtOpenGLQGLWidget.o
>    "QGLPixelBuffer::updateDynamicTexture(unsigned int) const",
> referenced from:
>        _meth_QGLPixelBuffer_updateDynamicTexture in
> sipQtOpenGLQGLPixelBuffer.o
>    "QGLFramebufferObject::QGLFramebufferObject(int, int, unsigned
> int)", referenced from:
>        sipQGLFramebufferObject::sipQGLFramebufferObject(int, int,
> unsigned int)in sipQtOpenGLQGLFramebufferObject.o
>    "QGLWidget::bindTexture(QPixmap const&, unsigned int, int)",
> referenced from:
>        _meth_QGLWidget_bindTexture in sipQtOpenGLQGLWidget.o
>    "QGLFramebufferObject::QGLFramebufferObject(QSize const&, unsigned
> int)", referenced from:
>        sipQGLFramebufferObject::sipQGLFramebufferObject(QSize const&,
> unsigned int)in sipQtOpenGLQGLFramebufferObject.o
> ld: symbol(s) not found
> collect2: ld returned 1 exit status
> make: *** [QtOpenGL.so] Error 1
>
> To make life more interesting, some of the OpenGL examples provided
> with QT don't compile in Xcode. For example the hellogl application
> does compile but the framebufferobject and framebufferobject2
> applications do not.
>
>
> framebufferobject
>
> Building target “framebufferobject” of project “framebufferobject”
> with configuration “Debug” — (1 error)
> 	    mkdir /Developer/Examples/Qt/opengl/framebufferobject/build/Debug/
> framebufferobject.app/Contents/MacOS
>      cd /Developer/Examples/Qt/opengl/framebufferobject
>      /Developer/usr/bin/g++-4.0 -o /Developer/Examples/Qt/opengl/
> framebufferobject/build/Debug/framebufferobject.app/Contents/MacOS/
> framebufferobject -L/Developer/Examples/Qt/opengl/framebufferobject/
> build/Debug -L/Library/Frameworks -L/System/Library/Frameworks -F/
> Developer/Examples/Qt/opengl/framebufferobject/build/Debug -filelist /
> Developer/Examples/Qt/opengl/framebufferobject/build/
> framebufferobject.build/Debug/framebufferobject.build/Objects-normal/
> ppc/framebufferobject.LinkFileList -framework QtSvg -framework QtXml -
> framework QtOpenGL -framework QtGui -framework Carbon -framework
> AppKit -framework QtCore -framework ApplicationServices -framework
> OpenGL -framework AGL -arch ppc -headerpad_max_install_names -L/
> Library/Frameworks -lz -lm -liconv
> Undefined symbols:
>    "QGLFramebufferObject::QGLFramebufferObject(int, int, unsigned
> int)", referenced from:
>        GLWidget::GLWidget(QWidget*)in glwidget.o
> ld: symbol(s) not found
> collect2: ld returned 1 exit status
> 		  "QGLFramebufferObject::QGLFramebufferObject(int, int, unsigned
> int)", referenced from:
> 		      GLWidget::GLWidget(QWidget*)in glwidget.o
> 		ld: symbol(s) not found
> 		collect2: ld returned 1 exit status
> Build failed (1 error)
>
>
> framebufferobject2
>
> Building target “framebufferobject2” of project “framebufferobject2”
> with configuration “Debug” — (2 errors)
> 	    cd /Developer/Examples/Qt/opengl/framebufferobject2
>      /Developer/usr/bin/g++-4.0 -o /Developer/Examples/Qt/opengl/
> framebufferobject2/build/Debug/framebufferobject2.app/Contents/MacOS/
> framebufferobject2 -L/Developer/Examples/Qt/opengl/framebufferobject2/
> build/Debug -L/Library/Frameworks -L/System/Library/Frameworks -F/
> Developer/Examples/Qt/opengl/framebufferobject2/build/Debug -filelist /
> Developer/Examples/Qt/opengl/framebufferobject2/build/
> framebufferobject2.build/Debug/framebufferobject2.build/Objects-normal/
> ppc/framebufferobject2.LinkFileList -framework QtOpenGL -framework
> QtGui -framework Carbon -framework AppKit -framework QtCore -framework
> ApplicationServices -framework OpenGL -framework AGL -arch ppc -
> headerpad_max_install_names -L/Library/Frameworks -lz -lm -liconv
> Undefined symbols:
>    "QGLWidget::bindTexture(QImage const&, unsigned int, int)",
> referenced from:
>        GLWidget::initializeGL()      in glwidget.o
>    "QGLFramebufferObject::QGLFramebufferObject(int, int, unsigned
> int)", referenced from:
>        GLWidget::GLWidget(QWidget*)in glwidget.o
> ld: symbol(s) not found
> collect2: ld returned 1 exit status
> 		  "QGLWidget::bindTexture(QImage const&, unsigned int, int)",
> referenced from:
> 		      GLWidget::initializeGL()      in glwidget.o
> 		  "QGLFramebufferObject::QGLFramebufferObject(int, int, unsigned
> int)", referenced from:
> 		      GLWidget::GLWidget(QWidget*)in glwidget.o
> 		ld: symbol(s) not found
> 		collect2: ld returned 1 exit status
> Build failed (2 errors)
>
>
> So I imagine I've found a problem with how QT has set up it's linker
> preferences, and being that I'm new to both QT and how OSX utilizes
> Frameworks I  thought I'd ask the experts, and see if there were any
> wise words that could be shared with me.

The binary installer for Qt has problems with 10.5. Qt, SIP and PyQt build 
fine from source on 10.5.1. Make sure you remove the broken version of Qt and 
configure PyQt with the right -q flag.

Phil



More information about the PyQt mailing list