wiki:BuildingQtOnLinux

Version 5 (modified by bero@arklinux.org, 14 years ago) (diff)

Add Ark Linux build instructions where they differ from *ubuntu's (different dependency package names, different QTDIR)

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.

Installing dependencies on Ubuntu Edgy

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

Installing dependencies on Ark Linux

On Ark Linux, install the required dependencies using

apt-get install devel-core qt4-devel gperf libxslt-devel bison sqlite-devel

Alternatively, install the needed packages (see list above) through Mission Control -> Install Software.

Build WebKit

You'll then need to 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, set the QTDIR environment variable to Qt 4.x's installation path (/usr/lib/qt4 on Ark Linux, /usr/share/qt4 on *Ubuntu), and build WebKit and the Qt test browser with

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.

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.

Attachments (1)

Download all attachments as: .zip