Эта глава не содержит библиотеки, необходимые для запуска X. Она содержит библиотеки, которые дополняют X. В некоторых случаях дополнение такое же простое, как поддержка шрифтов. В остальном они такие же комплексные, как и библиотеки, котрые располагаются между X и приложениями, запущенными в X, и предназначены для стандартизации внешнего вида и связей между процессами для различных приложений. Они так же помагают программистам в поставке общих элементов.
Пакет Qt содержит C++ GUI библиотеку. Она полезна для создания графических приложений или исполнения графических приложений, которые динамически сликованы с библиотекой Qt. Одним из наибольших пользователей Qt является KDE.
Адрес (HTTP): http://sunsite.rediris.es/mirror/Qt/source/qt-x11-free-3.3.3.tar.bz2
Адрес (FTP): ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.3.tar.bz2
Контрольная сумма: 3e0a0c8429b0a974b39b5f535ddff01c
Размер: 14.4 MB
Требуемое дисковое пространство: 250 MB
Расчетное время сборки: 13.4 SBU или 19.3 SBU полное
Есть несколько способов установки такого сложного пакета, как Qt. Файлы не полностью позиционно независимы. Процедура установки выполняет программу pkg-config для определения положения исполняемых файлов пакета, библиотек, заголовков и других файлов. Для Qt pkg-config будет искать файл lib/pkgconfig/qt-mt.pc, который должен быть изменен при перемещении пакета. Этот файл правильно настраивается процессами сборки.
Местом утсановки файлов по умолчанию является /usr/local/qt/. Многие комерческие дистрибутивы размещают файлы в системной иерархии /usr. Так же пакет может быть установлен в любую произвольную директорию.
Этот раздел покажет два различных способа.
Время сборки Qt достаточно большое. Если вы хотите сэкономить время и вам не нужны учебники и примеры, то измените первую строчку команды make на:
make sub-tools
Преимуществом этого способа является то, что нет необходимости обновлять файлы /etc/ld.so.conf или /etc/man.conf. Файлы пакета распространяются в пределах нескольких поддиректорий в иерархии /usr. Это способ, используемый в большинстве комерческих дистрибутивах.
sed -i "s:cp -f:install:" mkspecs/linux-g++/qmake.conf &&
bash
export PATH=$PWD/bin:$PATH &&
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH &&
./configure -prefix /usr -docdir /usr/share/doc/qt \
-headerdir /usr/include/qt -plugindir /usr/lib/qt/plugins \
-datadir /usr/share/qt -translationdir /usr/share/qt/translations \
-sysconfdir /etc/qt -qt-gif -system-zlib -system-libmng \
-no-exceptions -thread -plugin-imgfmt-png \
-system-libjpeg -system-libpng &&
find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g" &&
make &&
make install &&
ln -sf libqt-mt.so /usr/lib/libqt.so &&
rm /usr/bin/qmake &&
install -m755 -oroot -groot qmake/qmake /usr/bin &&
cp -r doc/man /usr/share &&
cp -r examples /usr/share/doc/qt &&
exit
Этот способ рекомендуется разработчиками Qt. Его преимуществом является содержание всех файлов пакета, сосредоточенных в иерархии указанной директории. При использовании этого способа любое обновление может быть сделано без перезаписи предидущей установки и пользователи могут легко вернуться на предидущую версию изменением одной символической ссылки.
Разработчики Qt по умолчанию используют /usr/local/qt/, хотя эта процедура помещает файлы в /opt/qt-3.3.3/, а затем создает символическую ссылку на /opt/qt/.
bash
export QTDIR=$PWD &&
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH &&
export PATH=$PWD/bin:$PATH &&
./configure -prefix /opt/qt-3.3.3 -qt-gif -system-libpng \
-system-libmng -system-zlib -system-libjpeg -no-exceptions \
-thread -plugin-imgfmt-png &&
make &&
make install &&
ln -sfn qt-3.3.3 /opt/qt &&
ln -s libqt-mt.so /opt/qt/lib/libqt.so &&
rm /opt/qt-3.3.3/bin/qmake &&
install -m755 -oroot -groot qmake/qmake /opt/qt-3.3.3/bin &&
cp -r doc/man /opt/qt/doc &&
cp -r examples /opt/qt/doc
exit
Если вы поместите ключ -plugin-sql-[драйвер] в команду configure, то вы так же должны поместить и -I[/путь/к/sql/заголовкам] для того, чтобы make смог найти подходящие файлы заголовков.
sed -i "s:cp -f:install:" mkspecs/linux-g++/qmake.conf: install безопаснее, чем cp когда используются библиотеки.
bash: Эта команда делает вход в подоболочку для изоляции изменений окружения.
export QTDIR=$PWD: Эта команда указывает, где размещен корень директории Qt.
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH: Эта команда позволяет еще не установленным библиотекам Qt быть использованными еще не установленными программами Qt.
export PATH=$PWD/bin:$PATH: Эта команда позволяет процессам сборки найти поддерживаемые исполняемые файлы.
-qt-gif: Этот ключ добавляет поддержку gif файлов в библиотеках.
-system-zlib -system-libpng: Этот ключ заставляет инстркуции сборки использовать разделяемые библиотеки, находящиеся в вашей системе, вместо создания собственного набора библиотек поддержки этих функций.
-plugin-imgfmt-png: Этот ключ разрешает компоновку libpng.
-no-exceptions: Этот ключ выключает исключения кодирования, генерируемые C++ компилятором.
-thread: Этот ключ добавляет поддержку multi-threading.
find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g": Эта команда удаляет жестко прописанные пути. В противном случае, uic всегда пытается запуститься с библиотеками Qt в /usr/lib.
ln -s libqt-mt.so /usr/lib/libqt.so: Эта команда позволяет скрипту configure найти рабочую установку Qt.
rm .../qmake; install -m755 -oroot -groot qmake/qmake .../bin: Программа qmake установлена некорректно командой make install. Эти две команды установят программу корректно.
cp -r doc/man /usr/share (or /opt/qt/doc): Эта команда устанавливает страницы man, которые пропущены в команде make install.
cp -r examples /usr/share/doc/qt (or /opt/qt/doc): Эта команда устанавливает примеры, которые пропущены в команде make install.
exit: Эта команда возвращает в основную оболочку и восстанавливает переменные окружения, установленные ранее.
Если вы установили Qt, используя Способ 2, то вам понадобится обновить некоторые файлы конфигурации, чтобы Qt корректно находился другими пакетами и системными процессами.
Обновите файлы /etc/ld.so.conf и /etc/man.conf:
cat >> /etc/ld.so.conf << "EOF"
# Begin qt addition to /etc/ld.so.conf
/opt/qt/lib
# End qt addition
EOF
ldconfig
cat >> /etc/man.conf << "EOF"
# Begin qt addition to man.conf
MANPATH /opt/qt/doc/man
# End qt addition to man.conf
EOF
Обновите переменную окружения PKG_CONFIG_PATH в вашем ~/.bash_profile или /etc/profile при помощи следующего:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig
Переменная окружения QTDIR должна быть установлена до сборки пакета, который зависит от Qt. Добавьте следующее в скрипт инициализации .bash_profile для каждого пользователя, который собирает пакеты с использованием библиотек Qt. Альтернативно, переменная может быть установлена в общесистемном файле /etc/profile.
export QTDIR=/opt/qt
Если вы хотите иметь исполняемые файлы Qt в пути поиска файлов вашей оболочки, то обновите переменную окружения PATH в вашем ~/.bash_profile или /etc/profile для включения /opt/qt/bin.
Как и с большинством библиотек, не нужно делать особой конфигурации. После обновления /etc/ld.so.conf, как объяснено выше, запустите /sbin/ldconfig и ldd сможет найти разделяемые библиотеки.
Библиотека Qt/X11 содержит APIs necessary to use programs based on the Qt GUI toolkit.
Пакет Qt содержит assistant, designer, linguist, lrelease, lupdate, moc, qm2ts, qmake, qtconfig, uic и библиотеки libqt-mt и libqui.