Version 48 (modified by 14 years ago) ( diff ) | ,
---|
Building the Qt port on Linux
These instructions apply to Linux in general with source packages.
Dependencies
The code should be easily built on any Linux distribution which has development packages for Qt installed. Below is the list of dependencies:
- Qt version 4.6 or later
- gperf
- bison
- flex (v2.5.33 or later)
- sqlite (development files)
- fontconfig (development files)
- xrender (development files)
- phonon (development files)
See also: how to install dependency packages on major linux distributions.
Building WebKit
First follow the instructions there to get the sources. The Qt port is part of the WebKit source tree, so you don't need anything extra.
Finally, set the QTDIR environment variable to Qt 4.x's installation path and make sure Qt 4.x's qmake is the first qmake in your PATH (typically by running export PATH=$QTDIR/bin:$PATH
). If your qmake binary has a different name, e.g. when using Debian, use the --qmake= option to specify the name.
Build WebKit and the Qt test browser with
WebKit/Tools/Scripts/build-webkit --qt
build-webkit
(see above) also supports special variable for specifying the OBJDIR directory, as well as some configure and build arguments
WEBKITOUTPUTDIR=`pwd`/qtbuild WebKit/Tools/Scripts/build-webkit --qt --makeargs="-j20 -s" --no-video --debug
Debugging WebCore
If you are debugging WebCore from a Qt build you will want to open up WebCore/WebCore.pro and edit the following section as instructed:
CONFIG(QTDIR_build) { # Remove the following 2 lines if you want debug information in WebCore CONFIG -= separate_debug_info CONFIG += no_debug_info }
Testing the port
A very simple test browser is built along with the port and can be executed with
Tools/Scripts/run-launcher --qt
Common Build Errors
Gold Linker Error
/usr/bin/gold: fatal error: out of file descriptors and couldn't close any
This is a bug in Gold Linker. See here
To fix this try the following with root privileges and build:
ulimit -n 65535
If you don't have root privileges you should add the following in /etc/security/limits.conf file
* hard nofile 65535
This might need restarting X11/reboot.
If you wan't a quick temporary workaround, try the following. (Tested in Ubuntu 10.10)
sudo -s; ulimit -n 65535; exec su - yourusername
Using Qt 4.2
../../../WebKitQt/Api/qwebnetworkinterface_p.h:134: error: ‘QSslError’ was not declared in this scope ../../../WebKitQt/Api/qwebnetworkinterface_p.h:134: error: template argument 1 is invalid ../../../WebKitQt/Api/qwebnetworkinterface_p.h:135: error: ‘QAuthenticator’ has not been declared ../../../WebKitQt/Api/qwebnetworkinterface_p.h:136: error: expected ‘,’ or ‘...’ before ‘&’ token ../../../WebKitQt/Api/qwebnetworkinterface_p.h:136: error: ISO C++ forbids declaration of ‘QNetworkProxy’ with no type make[1]: *** [tmp/ResourceHandleQt.o] Error 1
This error is caused by not having the minimum version of Qt installed. Install the minimum version of Qt, set the 'QTDIR' environment variable pointing to this version and try building WebKit again.
Missing gperf
../../../WebCore/html/HTMLDocument.cpp: In member function 'virtual void WebCore::HTMLDocument::determineParseMode(const WebCore::String&)': ../../../WebCore/html/HTMLDocument.cpp:389: error: expected initializer before '*' token ../../../WebCore/html/HTMLDocument.cpp:390: error: 'doctypeEntry' was not declared in this scope ../../../WebCore/html/HTMLDocument.cpp:398: error: 'doctypeEntry' was not declared in this scope ../../../WebCore/html/HTMLDocument.cpp:401: error: 'PubIDInfo' has not been declared ../../../WebCore/html/HTMLDocument.cpp:405: error: 'PubIDInfo' has not been declared
This error is typically caused by not having gperf
installed. Install gperf
, run touch WebCore/html/DocTypeStrings.gperf
and try building WebKit again.
Missing SQLite development package
../../../WebCore/loader/icon/SQLDatabase.cpp:30:21: error: sqlite3.h: No such file or directory ../../../WebCore/loader/icon/SQLDatabase.cpp:36: error: "SQLITE_ERROR" was not declared in this scope ../../../WebCore/loader/icon/SQLDatabase.cpp:37: error: "SQLITE_DONE" was not declared in this scope ../../../WebCore/loader/icon/SQLDatabase.cpp:38: error: "SQLITE_OK" was not declared in this scope ../../../WebCore/loader/icon/SQLDatabase.cpp:39: error: "SQLITE_ROW" was not declared in this scope
This error is typically caused by not having the development component of libsqlite3
installed. Install the development package and try building WebKit again.
Missing flex
.../WebKitBuild/Release/lib/libWebKitQt.so: undefined reference to `WebCore::CSSParser::lex()'
This error is typically caused by not having flex
installed. Install flex
, run touch WebCore/css/tokenizer.flex
and try building WebKit again.
Incompatible version of bison
bison -d -p kjsyy JavaScriptCore/kjs/grammar.y -o grammar.tab.c && mv grammar.tab.c tmp/grammar.cpp && mv grammar.tab.h tmp/grammar.h JavaScriptCore/kjs/grammar.y:364.3-366.9: type clash (`node' `') on default action JavaScriptCore/kjs/grammar.y:366.10: parse error, unexpected ":", expecting ";" or "|"
This error is caused by having an incompatible version of bison
installed. The single reported case of this error occurred with bison
1.75, and was resolved by updating to bison
2.3.
Missing Phonon
In file included from ../../../WebCore/platform/graphics/MediaPlayer.cpp:46: ../../../WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h:27:29: error: phononnamespace.h: No such file or directory In file included from ../../../WebCore/platform/graphics/MediaPlayer.cpp:46: ../../../WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h:120: error: ‘Phonon::State’ has not been declared ../../../WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h:120: error: ‘Phonon::State’ has not been declared
This error is caused by not having Phonon installed. Install the development version to resolve.
Missing fontconfig
error: fontconfig/fontconfig.h: No such file or directory
Install fontconfig-dev (libfontconfig-dev).
Dependencies for specific Linux distributions
Debian/Ubuntu Linux
To install required dependencies on Debian/Ubuntu, do
sudo aptitude install bison flex libqt4-dev libqt4-opengl-dev libphonon-dev libicu-dev libsqlite3-dev libxext-dev libxrender-dev gperf libfontconfig1-dev libphonon-dev
Ark Linux
On Ark Linux, install the required dependencies using
apt-get install devel-core qt4-devel qmake gperf bison sqlite-devel
Alternatively, install the needed packages (see list above) through Mission Control -> Install Software.
OpenSUSE Linux
This was tested on openSUSE 11.1
sudo zypper in libqt4-devel gperf bison libicu-devel sqlite-devel
Fedora Linux
This was tested on Fedora 13
sudo yum install gcc-c++ bison flex gperf phonon-devel qt-devel sqlite-devel libXrender-devel fontconfig-devel libicu-devel libXext-devel
Attachments (1)
- 001460c_20140521-043020_962862386.html (5.0 KB ) - added by 10 years ago.
Download all attachments as: .zip