[[PageOutline]] = Building the Qt port on Linux = These instructions apply to Ubuntu Linux 6.10 (Edgy Eft). T == Dependencies == The code should be easily built on any Linux distribution which has development packages for Qt installed. The Qt port requires Qt version 4, and 4.2 is recommended. To install required dependencies on Ubuntu edgy, do {{{ sudo aptitude install libqt4-dev }}} or install the libqt4-dev package from Synaptic. You might also need to install gperf, libxslt1-dev, and bison to resolve some dependencies. {{{ sudo aptitude install gperf libxslt-dev bison }}} You'll then need to [http://webkit.org/building/checkout.html check out the source code from Subversion]. The Qt port is part of the WebKit source tree, so you don't need anything extra. Finally, build WebKit and the Qt test browser with {{{ QTDIR=/usr/share/qt4/ WebKit/WebKitTools/Scripts/build-webkit }}} == Testing the port == A very simple test browser is built at WebKit/WebKitBuild/Release/WebKitQt/QtLauncher/QtLauncher. == Common Build Errors == === 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.