LINUX.ORG.RU

Qt4.8.7

 , ,


0

2

Здравствуйте, люди!

Собираю сабж из исходников:

./configure -confirm-license -opensource -debug-and-release -nomake examples -nomake tests

Много ошибок вида

error: ‘class Ui::QPrintPropertiesWidget’ has no member named ‘cupsPropertiesPage’

все касаются qprintdialog_unix.cpp.

Добавление

-no-cups

не помогает.

Подскажите, плиз, как сконфигурировать и собрать

UPD: Похоже, не собрать. А может, у кого-то есть офф-лайн инсталлятор 4.8.7? У меня только 4.8.1.

★★

Последнее исправление: braboar (всего исправлений: 1)

У Qt 4 давно уже дропнули поддержку, его ванильные исходники не собираются в современных окружениях современными компиляторами.

Всё что остаётся для решения подобных проблем – шустрить багтрекеры дистрибутивов, где бедные мейнтейнеры, которые вынуждены поддерживать эти копролиты, накладывают патчи.

EXL ★★★★★
()

Так что либо бери старые компиляторы и старый дистр (CentOS 7 как пример), там собирай Qt 4 и потом переноси его на современный хост, либо ковыряйся по вот этим ссылкам, вычленяй и накатывай патчи на ванильный Qt 4 ручками:

https://bugzilla.opensuse.org/show_bug.cgi?id=1121214
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=925811
https://salsa.debian.org/qt-kde-team/qt/qt4-x11/-/tree/master/debian/patches

EXL ★★★★★
()
Ответ на: комментарий от EXL

Спасибо, добрый человек!

Собирать точно не буду: если ни у кого не найдется более поздний инсталлятор ветки 4, буду использовать 4.8.1

braboar ★★
() автор топика

Что за дистрибутив?

В Debian Buster и Manjaro Qt4 имеется.

Правда, в манжаре со свежим g++ у меня отказался работать макрос foreach: проходит одну итерацию, и цикл завершается. Я просто заменил его на for по контейнеру из C++11, но по-хорошему, интересно, конечно, что там можно было сломать?

В бастере не пробовал, но собираюсь.

hobbit ★★★★★
()
Ответ на: комментарий от braboar

Есть старая программа, которую надо поддерживать.

С Qt5 пересобирать не пробовал? На него даже есть неофициальный порт QtWebKit. Но надо, конечно, конкретно смотреть, какие модули Qt программа использует. Так-то есть примеры проектов, которые успешно собираются и под 4, и под 5 из одних исходников.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Не очень хочется переписывать сборочные скрипты - все наши проекты построены на CMake, давно написаны скрипты со всеми опциями и зависимостями. Цель была собрать более свежий Qt (фиксы багов и т.д.). Вполне могу остаться на 4.8.1

braboar ★★
() автор топика
Ответ на: комментарий от hobbit

Да, поэтому я, наверно, останусь с 4.8.1.

braboar ★★
() автор топика

Если остаться без printdialog нормально, то мб просто удалить упоминание о нём из .pro кутешного? Ну или просто вычистить из него весь код, оставив пустые методы.

unC0Rr ★★★★★
()
Ответ на: комментарий от braboar

да перетащи ты на пятерку - там не очень много править и даже страничка есть у кутешников, объясняющая, как.

эт ж не с тройки на пятерку тащить - вот, там, да. зашквар…

aol ★★★★★
()
Ответ на: комментарий от aol

На целевых машинах часто стоит Дебиан с Qt4 и проще собрать с 4-ой веткой. Раньше я писал, что могу и собрать с 4.8.1.

braboar ★★
() автор топика
Ответ на: комментарий от unC0Rr

Мне более интересно, откуда такая ошибка лезет. Судя по тексту, тут не Qt конфликтует с чем-то внешним, а один кутешный исходник с другим.

Надо, наверное, начать тыкать. В статике под Windows я Qt собирал, надо бы и под линуксом попробовать…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от x905

вот тут ктото недавно собирал

Да, и решение у них — взяли уже патченые исходники со сторонней репы. Если это подойдёт ТСу, почему бы и нет. Но даже в теме по ссылке ТС в итоге озаботился, как бы это сравнить с оригиналом.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

КМК, все-таки конфликт с внешним миром. Я вчера собирал 4.8.7 в openSuSe Leap 15.1 (gcc 7, если не ошибаюсь, то 7.3) - ошибка была при сборке 3rdparty/javascriptcore, но до qprintdialog_unix.cpp могло и не дойти. Прямо сейчас собирается в Debian 9.5, gcc 6.3. Тот самый qprintdialog_unix.cpp уже проскочил. Так что, я думаю, @EXL был прав: проблема в компиляторах и окружении.

UPD. В дебиане та же ошибка с 3rdparty/javascriptcore.

braboar ★★
() автор топика
Последнее исправление: braboar (всего исправлений: 1)
Ответ на: комментарий от hobbit

В статике под Windows я Qt собирал, надо бы и под линуксом попробовать…

Я собирал статический Qt кроссом из-под линукса на винду. Могу показать, как собирать это кастомным тулчейном в произвольном окружении.

Binkledum
()
Ответ на: комментарий от braboar

https://github.com/vleschuk/bqt-autobuild - вот там со всеми нюансами и микропатчами. Кароче, по скрипту всё должно быть понятно. Это сборка клиента bitcoin (тогда ещё назывался bitcoin-qt), но одна из основных частей - это сборка собственно Qt.

Binkledum
()
Ответ на: комментарий от Binkledum

Тогда ещё про биткоины никто не знал и биткоин стоил пару центов) За скрипт мне тогда заплатили 25000р, а предлагали оплату в биткоинах, а я на это только поржал, эх =)

Binkledum
()
Ответ на: комментарий от Binkledum

Ok, приму меры предосторожности.

braboar ★★
() автор топика
Ответ на: комментарий от EXL

И все-таки, не удержался и собрал в Debian 7.11 - все получилось, так что, спасибо за помощь!

braboar ★★
() автор топика
23 сентября 2021 г.

Дело в новом GCC

Если кто-то еще столкнется: корень проблемы в том, что начиная с версии 9.1.0 GCC неправильно компилирует кутёвый макрос Q_FOREACH; в четвертом комментарии там есть ссылка на патч (для наложения на старые версии Qt его потребуется слегка подрихтовать).

danfe
()
Ответ на: комментарий от hobbit

Вообще, интересно

Коли зашла речь за Qt4, никто не в курсе как в нём рисовать рамку поверх изображения без использования painter, который , из-за копирования pixmap, жрёт не в себя (утраивает-учетверяет) память? А ещё менее плохо, ежели рамка в «векторном» виде.

anonymous
()

Проверил, с aur собралось. Но там довольно много каких-то патчей.

Dog ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.