Здравствуйте!
Готовлю сейчас релиз своего Qt-приложения. Хочу облегчить жизнь пользователям, чтобы они могли запустить программу на любом дистрибутиве, просто распаковав каталог. Поэтому делаю релиз в виде переносимого приложения.
Система, на которой я пишу программу - Debian Stable.
Система, на которой пытаюсь запустить программу - Ubuntu 10.10.
Я создал подкаталог ./lib относительно бинарника, куда должны копироваться библиотеки, и написал скрипт запуска mytetra.run:
#!/bin/sh
LD_LIBRARY_PATH=./lib:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
./mytetra
Затем начал экспериментировать с библиотеками.
У меня установлена самосборная Qt 4.5, под которой и скомпилена программа. Вначале я решил не добавлять свои самосборные библиотеки из /usr/lib, а воспользоваться теми, которые идут в комплекте cо всякими QtCreator сборки компании Nokia, ведь эти программы запускаются на всех дистрибутивах.
Мне нужны вот такие библиотеки:
lrwxrwxrwx 1 xi xi 18 Окт 30 00:57 libQtCore.so -> libQtCore.so.4.5.3
lrwxrwxrwx 1 xi xi 18 Окт 30 00:57 libQtCore.so.4 -> libQtCore.so.4.5.3
lrwxrwxrwx 1 xi xi 18 Окт 30 00:57 libQtCore.so.4.5 -> libQtCore.so.4.5.3
-rw-r--r-- 1 xi xi 2336164 Окт 16 2009 libQtCore.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtGui.so -> libQtGui.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtGui.so.4 -> libQtGui.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtGui.so.4.5 -> libQtGui.so.4.5.3
-rw-r--r-- 1 xi xi 10193176 Окт 16 2009 libQtGui.so.4.5.3
lrwxrwxrwx 1 xi xi 21 Окт 30 00:57 libQtNetwork.so -> libQtNetwork.so.4.5.3
lrwxrwxrwx 1 xi xi 21 Окт 30 00:57 libQtNetwork.so.4 -> libQtNetwork.so.4.5.3
lrwxrwxrwx 1 xi xi 21 Окт 30 00:57 libQtNetwork.so.4.5 -> libQtNetwork.so.4.5.3
-rw-r--r-- 1 xi xi 1144920 Окт 16 2009 libQtNetwork.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtSvg.so -> libQtSvg.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtSvg.so.4 -> libQtSvg.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtSvg.so.4.5 -> libQtSvg.so.4.5.3
-rw-r--r-- 1 xi xi 336376 Окт 16 2009 libQtSvg.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtXml.so -> libQtXml.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtXml.so.4 -> libQtXml.so.4.5.3
lrwxrwxrwx 1 xi xi 17 Окт 30 00:57 libQtXml.so.4.5 -> libQtXml.so.4.5.3
-rw-r--r-- 1 xi xi 274084 Окт 16 2009 libQtXml.so.4.5.3
Вначале решил проверять, как будет запускаться программа через mytetra.run на исходной системе, в которой я и провожу разработку. Для этого я начал наполнять каталог ./lib библиотеками.
1. Вначале попробовал взять библиотеки Qt 4.5 от QtCreator-0.9.1. Программа стала запускаться из скрипта mytetra.run. Однако, ни одна SVG-иконка на кнопках не показывается. Выглядит это дело так: http://rghost.ru/3088503/image.png.
2. Тогда попробовал взять библиотеки Qt 4.7 от QtCreator-2.0.1. Программа запускается из скрипта mytetra.run. Однако, ни одна SVG-иконка на кнопках не показывается, плюс почему-то используется другой шрифт. Выглядит это дело так: http://rghost.ru/3088525/image.png.
3. Мне ничего не оставалось, как скопировать свои самосборные библиотеки. С ними программа, как и ожидалось, запускается нормально, SVG-иконки на кнопках стали видны. Выглядит так: http://rghost.ru/3088509/image.png.
Затем я скопировал каталог с этим дистрибутивом программы (с самосборными библиотеками) на Ubuntu, попытался запустить через mytetra.run. Вначале программа ругнулась на отсутсвия libasound.so.2. Ну чтож, скопировал из Debian в каталог ./lib и её. После этого программа запустилась. Но SVG-иконки почему-то невидны! Вот так: http://rghost.ru/3088495/image.png.
То есть, в Debian иконки видны, а в Ubuntu - невидны, с одними и теми же Qt библиотеками.
И вот я незнаю, что еще нужно сделать, чтоб в Ubuntu стали нормально отображаться SVG-иконки.
...Блин, лор не позволяет длинные сообщения, в комментариях продолжение...