Страница 1 из 1

qt4. кривая отладочная сборка? [решено]

Добавлено: 09 окт 2023, 00:10
Роман Овсеевич
Понимаю, что тема с qt4 уже неактуальна, но все же. Обнаружил неправильную работу класса QByteArray в отладочной версии.
Программа ниже должна выдавать два true в консоль (и это так в релизной версии и обоих версиях для qt5), однако QByteArray().isNull() выдает false!

Код: Выделить всё

#include <qbytearray.h>
#include <qdebug.h>
int main(int argc, char *argv[])
{
	qDebug() << QByteArray().isNull() << QByteArray(NULL).isNull();
	return 0;
}
Конструктор QByteArray() отрабатывает неправильно. Он реализован inline, в отличии от QByteArray(const char*), с которым все ок. Возможно, какое-то несоответствие заголовка отладочным бинарникам.

qt4. кривая отладочная сборка?

Добавлено: 09 окт 2023, 01:23
irton
Что значит отладочная сборка? В каком пакете и какой версии проблема? Или вы сами себе конпеляете qt4?

qt4. кривая отладочная сборка?

Добавлено: 09 окт 2023, 10:19
Роман Овсеевич
Речь о qt4 из репозитория, пакет lib64qt4-devel, версия последняя 4.8.7-17. Компиляция программы в отладочной конфигурации qt дает неверный результат, в релизной - ок.
Что значит отладочная сборка?
Я думал, для отладочной конфигурации используются отдельные библиотеки qt, собранные без оптимизации (иногда так делали), сейчас посмотрел, нет библиотеки одни и те же.

qt4. кривая отладочная сборка?

Добавлено: 09 окт 2023, 11:01
irton
сомневаюсь что это можно как-то исправить.

qt4. кривая отладочная сборка? [решено]

Добавлено: 15 окт 2023, 10:54
Роман Овсеевич
Решение. Т.к. для себя (для разработки), то по рабоче-крестьянски собрал qt4 с отладкой в /usr/local/... из srpm.
1. Скачиваем srpm из http://mirror.rosalab.ru/rosa/rosa2021. ... 17.src.rpm .
2. Устанавливаем его командой "rpm -ihv ./qt4-4.8.7-17.src.rpm". В домашнем каталоге появилось ~/rpmbuild с подкаталогами SOURCES и SPECS.
3. Устанавливаем зависимости, необходимые для сборки. postgresql-devel почему-то не смог разрешиться, поставил его руками. Для остального команда "sudo dnf build-dep --spec ./qt4.spec" из каталога ~/rpmbuild/SPECS.
4. Подготавливаем к компиляции, применяем патчи командой "rpmbuild -bp qt4.spec". В ~/rpmbuild/BUILD/qt-everywhere-opensource-src-4.8.7 будут подготовленные исходники.
5. Запускаем конфигурацию, сборку и установку стандартным способом. Пример запуска конфигурации "./configure -prefix /usr/local -debug -opensource -confirm-license -nomake examples -nomake demos -nomake docs -system-sqlite -no-openssl -no-pch".
6. Для иконок qt4 нужна тема oxygen: "sudo dnf install oxygen-icon-theme".

qt4. кривая отладочная сборка? [решено]

Добавлено: 20 дек 2023, 16:09
Роман Овсеевич
Еще один момент, связанный с Qt4 - отсутствие иконок. Чтобы они появились, нужно поставить тему иконок oxygen.