Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: xintrea от Сентябрь 10, 2008, 20:45



Название: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: xintrea от Сентябрь 10, 2008, 20:45
Здравствуйте!


Имею Linux систему, в которой в данный момент установлена Qt 4.3.0. Решил установить Qt 4.4.1, но этого пакета нет в репозитарии.

Выкачал с официального сайта Qt 4.4.1 и решил его установить из исходников. Для configure никаких опций не задавал, компилировал как есть. Согласно Readme, после установки, Qt 4.4.1 должен был разместиться в /usr/local/Trolltech/Qt-4.4.1. Именно туда он и установился.

Код:
# ls -1 /usr/local/Trolltech/Qt-4.4.1
bin
demos
doc
examples
include
lib
mkspecs
phrasebooks
plugins
translations
q3porting.xml

Пакет Qt 4.3.0 из системы не удалял, основываясь на том, что Qt вроде как для каждой версии библиотеки держит отдельную папку с либами. Пакет Qt 4.3.0 у меня разложен так

/usr/share/qt4 - основная директория библиотеки, включает bin, doc, include...
/usr/lib - туда положены файлы вида libQtCore.so.4, libQtCore.so.4.3, libQtCore.so.4.3.0, libQtXml.so.4, libQtXml.so.4.3, libQtXml.so.4.3.0 ...
/usr/bin - туда помещен только файл qdbus


Вопрос такой - что теперь нужно сделать, чтобы заработала либа 4.4.1? Хочу обойтись только созданием симлинков.


Дополнительные вопросы

1. А надо ли удалять пакеты с qt 4.3.0 ?
2. А если удалить 4.3.0, будут ли работать программы, собранные под 4.3.0 с либой 4.4.1 (после того как размещу ее канадо)?


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 10, 2008, 21:59
1) какой дистрибутив linux? /* почему все так попривыкали писать winxp sp2, но linux - просто linux. linux - это вообще ядро! */
2) стоят ли dev-пакеты?

> Вопрос такой - что теперь нужно сделать, чтобы заработала либа 4.4.1?
делать ничего не надо - кутэ уже фунциклирует

в большинстве случаев все программы, собранные с более ранней версией Qt, будут работать с более новой версией (в большинстве, но не во всех - хоть тролли и сохраняют бинарную совместимость между минорками, при некорректной настройке/сборке всегда можно отправить совместимость под хвост коту)

если стоят все необходимые dev-пакеты, думаю, лучшим выбором будет полностью заменить 4.3.0 на 4.4.1 (если, конечно, 4.3.0 не нужна для разработки или ещё зачем) - можно просто заменить оригинальные файлы/папки от 4.3.0 симлинками на соответствующие файлы/папки от 4.4.1


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 10, 2008, 22:04
я не настаиваю на этом способе установки, но мне он нравится больше (чем установка в /usr/local или /usr, зачастую проводимая в распространённых дистрибутивах) - сам его и использую:

Цитировать
== Dependencies ==

=== Required ===
* X Window System

=== Optional ===
* Xinerama provided by and X Window System
* Xfixes provided by and X Window System
* Glib2
* FreeType
* FontConfig
* D-BUS
* OpenSSL
* LibTIFF
* libjpeg
* libmng
* NAS
* CUPS
* MySQL
* PostgreSQL
* unixODBC
* SQLite
* SQLite3
* Firebird

== Configuration Information ==

If you would like to compile with MySQL support add the following to the configure command:

 -plugin-sql-mysql -I/usr/include/mysql

If you would like to compile with PostgreSQL support add the following to the configure command:

 -plugin-sql-psql -I/usr/include/postgresql/server

If you would like to compile with SQLite support add the following to the configure command:

 -plugin-sql-sqlite2 -system-sqlite

If you would like to compile with SQLite3 support add the following to the configure command:

 -plugin-sql-sqlite -system-sqlite

If you would like to compile with unixODBC support add the following to the configure command:

 -plugin-sql-odbc

If you would like to compile with NAS support add the following to the configure command:

 -system-nas-sound

If you would like to disable Qt 3 support functionality add the following to the configure command:

 -no-qt3support

If your X Window System is NOT Xorg, then add to configure:

 -no-xfixes

If you want optimized qmake tool add the following to the configure command:
 -optimized-qmake

If you would like to disable GLib event loop add the following to the configure command:

 -no-glib

Compile the package:

 mkdir -v /opt/qt-4.4.1 &&
 ln -v -sfn qt-4.4.1 /opt/qt4 &&
 ./configure -prefix /opt/qt4 \
     -libdir /opt/qt4/lib \
     -plugindir /opt/qt4/lib/plugins \
     -headerdir /opt/qt4/include \
     -datadir /opt/qt4/share \
     -translationdir /opt/qt4/share/translations \
     -docdir /opt/qt4/share/doc/qt \
     -demosdir /opt/qt4/share/demos \
     -examplesdir /opt/qt4/share/examples \
     -sysconfdir /etc/qt4 \
     -L/usr/lib \
     -qt-gif \
     -system-zlib \
     -system-libtiff \
     -system-libpng \
     -system-libmng \
     -system-libjpeg \
     -no-exceptions \
     -openssl \
     -opengl \
     -glib \
     -release &&
 make

Install the package

 make install


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: xintrea от Сентябрь 10, 2008, 22:54
1) какой дистрибутив linux? /* почему все так попривыкали писать winxp sp2, но linux - просто linux. linux - это вообще ядро! */

А я привык скрывать какой дистриб линуха у меня потому, что все сразу начинают советовать обновляться. И мне приходится долго объяснять почему я это делать не могу (это связано с разработкой под конкретное железо). У меня Ubuntu 7.04.


2) стоят ли dev-пакеты?

Да, стоят. libqt4-dev 4.3.0-4ubuntu1~fiesty1


> Вопрос такой - что теперь нужно сделать, чтобы заработала либа 4.4.1?

делать ничего не надо - кутэ уже фунциклирует

в большинстве случаев все программы, собранные с более ранней версией Qt, будут работать с более новой версией (в большинстве, но не во всех - хоть тролли и сохраняют бинарную совместимость между минорками, при некорректной настройке/сборке всегда можно отправить совместимость под хвост коту)

если стоят все необходимые dev-пакеты, думаю, лучшим выбором будет полностью заменить 4.3.0 на 4.4.1 (если, конечно, 4.3.0 не нужна для разработки или ещё зачем) - можно просто заменить оригинальные файлы/папки от 4.3.0 симлинками на соответствующие файлы/папки от 4.4.1

Мда, попытался удалить пакет libqt4-core (4.3.0), вместе с пакетом будет удалено половина системы. Придется вручную заменять и распихивать.


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 11, 2008, 10:48
по ушам надо стучать тем, кто советует обновиться :)
7.04 - тоже неплохой дистр был

про dev-пакеты: я спрашивал не про кутёвые dev-пакеты, а про dev-пакеты, от которых зависит корректная сборка самой кутэ. к примеру, если 4.3.0 была собрана с полной поддержкой иксов, а теперь соберём 4.4.1 с частичной (поддержкой иксов) и заменим ею 4.3.0, многие программы не смогут корректно работать...а то и вооще запускаться

удалять libqt4-core (4.3.0) не нужно. я советовал просто забэкапить оригинальные файлы и заменить их симлинками на соответствующие от 4.4.1
...и на всякий случай можно прописать /usr/local/Trolltech/Qt-4.4.1/lib в /etc/ld.so.conf


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, k
Отправлено: Пантер от Сентябрь 11, 2008, 12:23
Да ничего вообще делать не нужно. Просто делаешь симлинк
ln -s /usr/local/Trolltech/Qt-4.4.1/bin/qmake /usr/bin/qmake_4.4.1 и все. Проверено временем. Можно так хоть 10 разных сборок кути держать.


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 11, 2008, 12:28
это чтобы собирать - qmake знает все пути и сам всё разрулит...
а чтобы старые проги работали с новым Qt...qmake'а будет мало


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Пантер от Сентябрь 11, 2008, 12:55
Старые проги будут работать со старой кутей, пока их не перекомпилировать.


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 11, 2008, 13:54
я так понял, что старая версия не нужна для разработки - в таком случае не вижу смысла оставлять её, если можно перейти на более новую...


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: vaprele07 от Сентябрь 11, 2008, 14:04
в убунту есть /etc/alternatives где живет линка на qmake обычно меняют ее


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Admin от Сентябрь 11, 2008, 14:45
мне кажется нужно играться с переменными среды

ставим qt  в папку /home/user/local

набираем
Цитировать
env

и видим типа

Цитировать
PATH=/opt/intel/cc/9.1.047/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
LD_LIBRARY_PATH=/home/eugene/local/lib

нужно изменить для запуска программы переменные среды PATH и LD_LIBRARY_PATH ( возможно еще что -то)





Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Пантер от Сентябрь 11, 2008, 16:38
У меня кути вообще нет в PATH и LD_LIBRARY_PATH. Я уже говорил, от какой кути используешь qmake, с той и будет работать. Как мне кажется, где-то в исполняемом файле это завязано.


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Admin от Сентябрь 11, 2008, 18:11
переменные среды относятся к вашему шелу  - это или bash или zsh

так что если вы работает в консолке - переменные есть
подробнее тут
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%80
%D0%B5%D0%B4%D1%8B


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Пантер от Сентябрь 11, 2008, 18:18
Если все таки переменные среды, то объясни такой момент. У меня стоит 2 кути:
1. /opt/qt/4.3.0
2. /opt/qt/4.4.1
Если я компилирую с использованием qmake от 1, то приложение выдает aboutQt() 4.3.0, и соответственно от 2 4.4.1. Переменные среды не трогаю.


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Admin от Сентябрь 11, 2008, 18:24
ты правильно выставляешь переменные среды
QTDIR и QTMAKESPEC


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, k
Отправлено: Пантер от Сентябрь 11, 2008, 18:28
Я вообще их не трогал и не трогаю.
Вот мой env
Код:
CPLUS_INCLUDE_PATH=/usr/lib/qt/include:/usr/lib/qt/include
MANPATH=/usr/local/man:/usr/man:/usr/lib/java/man:/usr/lib/java/man
KDE_MULTIHEAD=false
HOSTNAME=panter.dsd.org
DM_CONTROL=/var/run/xdmctl
TERM=xterm
SHELL=/bin/bash
XDM_MANAGED=/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched,rsvd,method=classic
GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/panter/.gtkrc-2.0:/home/panter/.kde/share/config/gtkrc-2.0
TMPDIR=/home/panter/tmp
GTK_RC_FILES=/etc/gtk/gtkrc:/home/panter/.gtkrc:/home/panter/.kde/share/config/gtkrc
GS_LIB=/home/panter/.fonts
WINDOWID=37748741
QTDIR=/usr/lib/qt
KDE_FULL_SESSION=true
USER=panter
LD_LIBRARY_PATH=:/usr/local/lib:/usr/local/lib/claws-mail/plugins:/usr/local/pgsql/lib:/usr/local/lib:/usr/local/lib/claws-mail/plugins:/usr/local/pgsql/lib
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.bat=01;32:*.BAT=01;32:*.btm=01;32:*.BTM=01;32:*.cmd=01;32:*.CMD=01;32:*.com=01;32:*.COM=01;32:*.dll=01;32:*.DLL=01;32:*.exe=01;32:*.EXE=01;32:*.arj=01;31:*.bz2=01;31:*.deb=01;31:*.gz=01;31:*.lzh=01;31:*.rar=01;31:*.RAR=01;31:*.rpm=01;31:*.tar=01;31:*.taz=01;31:*.tb2=01;31:*.tbz2=01;31:*.tbz=01;31:*.tgz=01;31:*.tz2=01;31:*.z=01;31:*.Z=01;31:*.zip=01;31:*.ZIP=01;31:*.zoo=01;31:*.asf=01;35:*.ASF=01;35:*.avi=01;35:*.AVI=01;35:*.bmp=01;35:*.BMP=01;35:*.flac=01;35:*.FLAC=01;35:*.gif=01;35:*.GIF=01;35:*.jpg=01;35:*.JPG=01;35:*.jpeg=01;35:*.JPEG=01;35:*.m2a=01;35:*.M2A=01;35:*.m2v=01;35:*.M2V=01;35:*.m4a=01;35:*.M4A=01;35:*.m4p=01;35:*.M4P=01;35:*.m4v=01;35:*.M4V=01;35:*.mov=01;35:*.MOV=01;35:*.mp3=01;35:*.MP3=01;35:*.mpc=01;35:*.MPC=01;35:*.mpeg=01;35:*.MPEG=01;35:*.mpg=01;35:*.MPG=01;35:*.ogg=01;35:*.OGG=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.PNG=01;35:*.ppm=01;35:*.ram=01;35:*.RAM=01;35:*.rm=01;35:*.RM=01;35:*.tga=01;35:*.TGA=01;35:*.tif=01;35:*.TIF=01;35:*.tiff=01;35:*.TIFF=01;35:*.wav=01;35:*.WAV=01;35:*.wma=01;35:*.WMA=01;35:*.wmv=01;35:*.WMV=01;35:*.xbm=01;35:*.xcf=01;35:*.xpm=01;35:*.xwd=01;35:*.XWD=01;35:
GDK_USE_XFT=1
KDEDIR=/usr
SESSION_MANAGER=local/panter:/tmp/.ICE-unix/2874
T1LIB_CONFIG=/usr/share/t1lib/t1lib.config
XDG_CONFIG_DIRS=/etc/xdg:/etc/kde/xdg:/etc/xfce/xdg:/etc/kde/xdg:/etc/xfce/xdg
KONSOLE_DCOP=DCOPRef(konsole-2906,konsole)
MINICOM=-c on
DESKTOP_SESSION=default
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:.:/sbin:/usr/sbin:/usr/local/lib/claws-mail/plugins
LC_COLLATE=C
KONSOLE_DCOP_SESSION=DCOPRef(konsole-2906,session-2)
INPUTRC=/etc/inputrc
PWD=/mnt/win_d/program/qt/Reference_ASP_3.2/bin
JAVA_HOME=/usr/lib/java
LANG=ru_RU.utf8
KDE_SESSION_UID=1000
PS1=\u@\h:\w\$
PS2=>
SHLVL=2
HOME=/home/panter
XCURSOR_THEME=default
LS_OPTIONS= -F -b -T 0 --color=auto
G_FILENAME_ENCODING=@locale
LESS=-M
LOGNAME=panter
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
LESSOPEN=|lesspipe.sh %s
DISPLAY=:0
G_BROKEN_FILENAMES=1
COLORTERM=
_=/usr/bin/env
В /usr/lib/qt лежит третья кутя.
А вот что я нашел в скомпилированной проге:
Код:
/opt/qt/4.4.1/lib.GCC_3.0.GLIBC_2.0.GLIBC_2.1.3.CXXABI_1.3.GLIBCXX_3.4


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: xintrea от Сентябрь 12, 2008, 00:18
Фух, ну вроде установил, и даже работает.


Вначале собрал в файлик все названия файлов либ и бинарей, которые принадлежали установленным пакетам версии 4.3.0

Потом скриптик написал чтоб они в бекаповую директорию перенеслись на всякий случай.

Сделал линки /ust/lib/qt4 ->  /usr/local/Trolltech/Qt-4.4.1/ и
/usr/include/qt4 -> /usr/local/Trolltech/Qt-4.4.1/include

Потом написал скриптик, который создает линки в директории /usr/bin на все файлы директории /usr/local/Trolltech/Qt-4.4.1/bin

Потом в /etc/ld.so.conf прописал директории /usr/include/qt4 и /usr/include/qt4/lib (так как незнаю, обходятся ли директории рекурсивно).

Потом дал команду ldconfig.

Ну и после этого qt-бинари стали использовать новую библиотеку.


Конечно, такой метод установки библиотеки меня не радует, но в свете того, что удалилась бы половина системы пакетным менеджером... Даже была мысля удалить либу через пакетный менеджер, записав, какие проги были в зависимостях... Но они бы потом не устанавливались, пока я бы не поставил ненужную мне либу 4.3.0.. Прогресс идет явно не в том направлении!


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Admin от Сентябрь 12, 2008, 00:40
по мне так ты пол системы хакнул ))
ну работает и ладно))


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 12, 2008, 02:30
а в чём хак, если бинарная совместимость? под вендой же мы не боимся бинарные обновления ставить...

/usr/include/qt4 в /etc/ld.so.conf явно лишнее


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Пантер от Сентябрь 12, 2008, 08:35
Ппц. Ну ты и намудрил. ;)


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Admin от Сентябрь 12, 2008, 09:18
все решилось бы установкой переменных среды - запуск программы в некотором окружении
нада как нить фак на это написать - если лень позволит


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: xintrea от Сентябрь 12, 2008, 18:08
/usr/include/qt4 в /etc/ld.so.conf явно лишнее


Скорее всего. И всеже нигде найти не могу, обрабатываются ли рекурсивно директории, прописанные в /etc/ld.so.conf ? Как-то странно, механизм древний как пятый редхат, а подробности его работы не разглашаются.


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 12, 2008, 19:26
механизм древнее, чем ты думаешь :)
за два дня уже выяснил бы эмпирическим путём...

но инклюды прописывать в лд.со.конф точно не нужно!


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Пантер от Сентябрь 13, 2008, 00:03
Млин, неужели я такие тупые вещи говорю??? Попробуйте поставить под Линухом себе 2 версии кути и компильте через разные кумэйки. Проги соответственно будут пользоваться разными версиями. Не нужно никаких env или ld.so.conf. Проверьте и попробуйте опровергнуть. И не нужно велосипеды изобретать. :(


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: ритт от Сентябрь 13, 2008, 02:22
никто и не говорит про тупые вещи.
опровергать как бы и нечего - да, по умолчанию вкомпиливает пути в бинарники (смотреть mkspecs/common/g++.conf)
но цель ведь была безболезненно заменить старую версию на новую, да с возможностью отката. xintrea в итоге этого и добился, правда, черезчур уж намудрив...


Название: Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0
Отправлено: Admin от Сентябрь 13, 2008, 07:25
ладна - чел задачу решил
не так как мы - но решил ) тему закрою