суббота, 20 марта 2010 г.

Сборка Qt под ICC на Ubuntu - продолжение

Вот тут я уже писал, как собирать Qt под ICC. Однако для работы Qt Creator нужна дллька qwebview.dll (libqwebview.so), которая собирается вместе с WebKit. Я, конечно, в оригинальном конфиге никаких QtScript и WebKit не разрешал, однако для Креатора таки придется. Правильно будет вот так:

$ ./configure -opensource -release -platform linux-icc -qt-sql-sqlite -plugin-sql-sqlite -webkit -nomake examples -nomake demos -no-qt3support -no-opengl -no-phonon -no-phonon-backend

При сборке под Windows все хорошо- ICC собирает все подряд без ошибок, а вот под Ubuntu возникает проблема. Полностью она изложена в QTBUG-9172 и в WebKit Bug 36422, вкратце- вот что выдается компилятором ICC:

../JavaScriptCore/jit/JITStubs.cpp(108): error: expected an identifier

asm volatile (

^

UPD: Файл, на котором компилятор ломается, находится в src\3rdparty\webkit\JavaScriptCore\jit\. А вот кусок кода, который не может быть разобран:

#if COMPILER(GCC) && PLATFORM(X86)

...

asm volatile (

Практически это означает, что Qt Creator, даже если его и собрать под ICC, работать не будет, потому что нет нужных длл. Не знаю, может быть, ICC умеет делать такой же name mangling, как и GCC. Если это так, то возможно будет использование длллек прямо из Qt SDK. Однако, как этого добиться от ICC, я не знаю. В доках по ICC есть некоторая инфа по совмести с G++, буду смотреть.

UPD: WebKit Bug 36422 подтвержден Kent Hansen.
UPD2: WebKit Bug 36422 пофиксен и закрыт Oliver Goffart.

2 комментария:

  1. Проблема только с 32битной версией, в 64 все нормально

    ОтветитьУдалить
  2. Спасибо! У меня, к сожалению, нет 64-битной машины с линуксом. И времени, чтобы разобраться, в чем там разница в исходниках WebKit, тоже нет.

    ОтветитьУдалить