Problem with Qt 4.8.2 QWebkit compilation under Ubuntu

The error message is following:

In file included from /usr/include/glib-2.0/glib/gasyncqueue.h:34:0,
                 from /usr/include/glib-2.0/glib.h:34,
                 from /usr/include/glib-2.0/gobject/gbinding.h:30,
                 from /usr/include/glib-2.0/glib-object.h:25,
                 from /usr/include/glib-2.0/gio/gioenums.h:30,
                 from /usr/include/glib-2.0/gio/giotypes.h:30,
                 from /usr/include/glib-2.0/gio/gio.h:28,
                 from wtf/gobject/GOwnPtr.cpp:24:
/usr/include/glib-2.0/glib/gthread.h:51:16: error: ‘union’ tag used in naming ‘struct _GMutex’ [-fpermissive]
/usr/include/glib-2.0/glib/gthread.h:58:7: error: ‘union’ tag used in naming ‘struct _GMutex’ [-fpermissive]
make[2]: *** [.obj/release-static/GOwnPtr.o] Error 1
make[2]: Leaving directory `/home/honza/qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source/JavaScriptCore'
make[1]: *** [sub-JavaScriptCore-JavaScriptCore-pro-make_default-ordered] Error 2
make[1]: Leaving directory `/home/honza/qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source'
make: *** [sub-webkit-make_default-ordered] Error 2

the reason is because of incompatibility between Qt 4.8.2 and glib-2.0.

The solution is described in this (not commited) bug fix:

https://codereview.qt-project.org/#patch,sidebyside,25069,1,src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h

Simply edit following file

Qt/src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h

and modify following line

55: typedef struct _GMutex GMutex;

to

55: typedef union _GMutex GMutex;

that’s it.

Leave a Reply

Your email address will not be published. Required fields are marked *