LINUX.ORG.RU

История изменений

Исправление ZenitharChampion, (текущая версия) :

Дистрибуция Qt5 это вообще очень интересный вопрос. Например однажды я запустил Unigine Superposition. Там лаунчер на Qt5. Не запускается, и причин не называет. Не помню точно как, но я нашёл отладочную информацию. Не найдена библиотека libGLdispatch. Оказывается, эта библиотека идёт с драйвером NVIDIA, но почему-то она не установилась на мой компьютер вместе с драйвером. Не знаю почему. Возможно, потому что я отказался от использования GLvnd при установке драйвера. И то ли библиотеки Qt5, распространяемые с программой, то ли системный libGL, требует libGLdispatch. Причём ни одна другая программа не требует.

Компилировал я Qt5 сам. Получились красивые бинарники. Почему-то при использовании этих бинарников не работает клавиатура. Почему? А потому что, при компилировании, Qt попросил xkbcommon. Компилирую xkbcommon. Он просит libxcb >= 1.10, а у меня только 1.5. xkbcommon компилируется без поддержки x11. А раз он компилируется без поддержки x11, то клавиатура в приложениях Qt5 не работает.

Ладно, обновляю libxcb до нужной версии, пересобираю xkbcommon с поддержкой x11, пересобираю Qt5. И что вы думаете? Не работает. Ругается в консоль что-то про XKB_CONFIG_ROOT. Если выполнить то, что предлагают в сообщении об ошибке, всё начинает работать. И, как я понимаю, система это запомнит, и больше ничего делать не надо. Но блин, почему первый запуск-то глючит?

Добавил опцию при сборке:

	-xkb \
	-system-xkbcommon \
	-xkb-config-root /usr/share/X11/xkb \

Стало нормально и при первом запуске тоже. Ну блин, а почему сразу не работало нормально? И что кстати делает строка:

%define xkbconfigroot %(pkg-config --variable=xkb_base xkeyboard-config)

, которая стоит в SPEC-файле перед ./configure?

И кстати, если выставить -qt-xkbcommon вместо -system-xkbcommon, я надеялся что в этом случае удастся обойтись без обновления libxcb. А вот нет, нифига. А опция -qt-xcb вместо -xcb по-идее должна подтянуть libxcb 1.10, но нет, нифига, она подтягивает только xcb-util, но не libxcb!

Дальше. Я комплировал Qt5 как при помощи SPEC-файла с установкой в /usr, так и вручную. RPM-ка в итоге нормально работает, а мой результат компиляции вручную... В общем, я запускаю мою программу на Qt5 на другом компьютере, и там квадратики вместо символов. Запускаю из командной строки, и узнаю, что не найдена директория /home/zenitur/qt5-build/src/fonts. Притом что на целевом компьютере директории /home/zenitur и близко нет. Как оно так скомпилировалось, что местоположение шрифтов оказалось захардкожено на мой «хомяк»?

И это не говоря уж о неободимости таскать вместе с программой - файл libqxcb.so и директорию platforms. Вот было же так просто во времена Qt4, когда можно было просто положить libQt4Core и libQt4Gui, и всё!

Исходная версия ZenitharChampion, :

Дистрибуция Qt5 это вообще очень интересный вопрос. Например однажды я запустил Unigine Superposition. Там лаунчер на Qt5. Не запускается, и причин не называет. Не помню точно как, но я нашёл отладочную информацию. Не найдена библиотека libGLdispatch. Оказывается, эта библиотека идёт с драйвером NVIDIA, но почему-то она не установилась на мой компьютер вместе с драйвером. Не знаю почему. Возможно, потому что я отказался от использования GLvnd при установке драйвера. И то ли библиотеки Qt5, распространяемые с программой, то ли системный libGL, требует libGLdispatch. Причём ни одна другая программа не требует.

Компилировал я Qt5 сам. Получились красивые бинарники. Почему-то при использовании этих бинарников не работает клавиатура. Почему? А потому что, при компилировании, Qt попросил xkbcommon. Компилирую xkbcommon. Он просит libxcb >= 1.10, а у меня только 1.5. xkbcommon компилируется без поддержки x11. А раз он компилируется без поддержки x11, то клавиатура в приложениях Qt5 не работает.

Ладно, обновляю libxcb до нужной версии, пересобираю xkbcommon с поддержкой x11, пересобираю Qt5. И что вы думаете? Не работает. Ругается в консоль что-то про XKB_CONFIG_ROOT. Если выполнить то, что предлагают в сообщении об ошибке, всё начинает работать. И, как я понимаю, система это запомнит, и больше ничего делать не надо. Но блин, почему первый запуск-то глючит?

Добавил опцию при сборке:

	-xkb \
	-system-xkbcommon \
	-xkb-config-root /usr/share/X11/xkb \

Стало нормально и при первом запуске тоже. Ну блин, а почему сразу не работало нормально? И что кстати делает строка:

%define xkbconfigroot %(pkg-config --variable=xkb_base xkeyboard-config)

, которая стоит в SPEC-файле перед ./configure?

И кстати, если выставить -qt-xkbcommon вместо -system-xkbcommon, я надеялся что в этом случае удастся обойтись без обновления libxcb. А вот нет, нифига. А опция -qt-xcb вместо -xcb по-идее должна подтянуть libxcb 1.10, но нет, нифига, она подтягивает только xcb-util, но не libxcb!

Дальше. Я комплировал Qt5 как при помощи SPEC-файла с установкой в /usr, так и вручную. RPM-ка в итоге нормально работает, а мой результат компиляции вручную... В общем, я запускаю мою программу на Qt5 на другом компьютере, и там квадратики вместо символов. Запускаю из командной строки, и узнаю, что не найдена директория /home/zenitur/qt5-build/src/fonts. Притом что на целевом компьютере директории /home/zenitur и близко нет. Как оно так скомпилировалось, что местоположение шрифтов оказалось закардкожено на мой «хомяк»?

И это не говоря уж о неободимости таскать вместе с программой - файл libqxcb.so и директорию platforms. Вот было же так просто во времена Qt4, когда можно было просто положить libQt4Core и libQt4Gui, и всё!