The Qt package contains a C++ GUI library. This is useful for creating graphical applications or executing graphical applications that are dynamically linked to the Qt library. One of the major users of Qt is KDE.
Download (HTTP): http://ftp.silug.org/mirrors/ftp.trolltech.com/qt/source/qt-x11-free-3.3.8.tar.bz2
Download (FTP): ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.8.tar.bz2
Download MD5 sum: cf3c43a7dfde5bfb76f8001102fe6e85
Download size: 14.3 MB
Estimated disk space required: 261 MB
Estimated build time: 11 SBU (full), 7.5 SBU (sub-tools)
Note: if for whatever reason you do not have the recommended
libraries installed on your system, you must remove the
corresponding -system- and
<library>-plugin-imgfmt-
parameters from the configure commands shown in the
instructions below.
<library>
NAS-1.9, CUPS-1.2.7, MySQL-5.0.37, PostgreSQL-8.2.3, unixODBC-2.2.12, SQLite and Firebird
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/qt
The Qt source hard codes the
location of the X Window System
installtion to /usr/X11R6. If you've
installed the X Window System in
any prefix other than /usr/X11R6,
then you should correct the qmake
configuration files with the following commands, replacing
<PREFIX> with the
installation prefix of the X Window
System:
for file in $(grep -lr "X11R6" *)
do
sed -i "s@/usr/X11R6@<PREFIX>@g" $file
done
There are several ways to install a complicated package such as
Qt. The files are not completely
position independent. Installation procedures execute the program
pkg-config to
determine the location of package executables, libraries, headers,
and other files. For Qt,
pkg-config will look
for the file lib/pkgconfig/qt-mt.pc
which must be modified if relocating the package. This file is set
up correctly by the build process.
The default installation places the files in /usr/local/qt/. Many commercial distributions
place the files in the system's /usr
hierarchy. The package can also be installed in an arbitrary
directory.
This section will demonstrate two different methods.
Building Qt in a chroot environment may fail.
The build time for Qt is quite long. If you want to save some time and don't want the tutorials and examples, change the first make command to:
make sub-tools
The advantage of this method is that no updates to the
/etc/ld.so.conf or /etc/man_db.conf files are required. The
package files are distributed within several subdirectories of
the /usr hierarchy. This is the
method that most commercial distributions use.
If Qt is being reinstalled, run the following commands from a console or non-Qt based window manager. It overwrites Qt libraries that should not be in use during the install process.
sed -i -e 's:$(QTDIR)/include:&/qt:' \
-e 's:$(QTDIR)/lib:&/qt:' \
mkspecs/linux*/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-libpng \
-system-libjpeg \
-system-libmng \
-plugin-imgfmt-png \
-plugin-imgfmt-jpeg \
-plugin-imgfmt-mng \
-no-exceptions \
-thread \
-tablet &&
find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g" &&
make &&
exit
This package does not come with a test suite.
Now, as the root user:
make install && ln -v -sf libqt-mt.so /usr/lib/libqt.so && cp -v -r doc/man /usr/share && cp -v -r examples /usr/share/doc/qt
This is the method recommended by the Qt developers. It has the advantage of keeping all the package files consolidated in a dedicated directory hierarchy. By using this method, an update can be made without overwriting a previous installation and users can easily revert to a previous version by changing one symbolic link.
The Qt developers use a default
location of /usr/local/qt/, however
this procedure puts the files in /opt/qt-3.3.8/ and then creates a symbolic link
to /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.8 \
-sysconfdir /etc/qt \
-qt-gif \
-system-zlib \
-system-libpng \
-system-libjpeg \
-system-libmng \
-plugin-imgfmt-png \
-plugin-imgfmt-jpeg \
-plugin-imgfmt-mng \
-no-exceptions \
-thread \
-tablet &&
make &&
exit
This package does not come with a test suite.
Now, as the root user:
make install && ln -v -sfn qt-3.3.8 /opt/qt && ln -v -s libqt-mt.so /opt/qt/lib/libqt.so && cp -v -r doc/man examples /opt/qt/doc
sed -i -e ...
mkspecs/linux*/qmake.conf: Directories in
qmake.conf need to be adjusted to
match the BLFS Method 1 installation directories.
bash: This command enters a sub-shell to isolate environment changes.
export QTDIR=$PWD: This command defines where the root of the Qt directory is located.
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH: This command allows the not yet installed Qt libraries to be used by the not yet installed Qt programs.
export PATH=$PWD/bin:$PATH: This command allows the build process to find supporting executables.
-qt-gif: This switch adds
support for gif files to the
libraries.
-system-zlib -system-libpng
-system-libjpeg -system-mng: These switches force the
build instructions to use the shared libraries that are on your
system instead of creating a custom set of support libraries for
these functions.
-plugin-imgfmt-png -plugin-imgfmt-jpeg
-plugin-imgfmt-mng: These switches enable run-time
linking of the referenced libraries.
If you pass the -plugin-sql- or
<driver>-qt-sql- switch to
the configure
command, you must also pass <driver>-I
so make can find
the appropriate header files. For instance, adding mysql support will require </path/to/sql/headers>-I/usr/include/mysql -qt-sql-mysql.
To check if mysql is autotetected properly, examine the output of ./configure -I/usr/include/mysql -help. Other database support will require similar configure parameters.
-no-exceptions: This switch
disables the exceptions coding generated by the C++ compiler.
-thread: This switch adds
support for multi-threading.
find -type f -name Makefile | xargs
sed -i "s@-Wl,-rpath,/usr/lib@@g": This command
removes hardcoded run-time paths. Otherwise, uic always tries to run with
Qt libraries in /usr/lib.
ln -v -s libqt-mt.so /usr/lib/libqt.so: This command allows configure scripts to find a working Qt installation.
cp -v -r doc/man examples /usr/share (or /opt/qt/doc): This command installs the man pages and examples which are missed by make install.
exit: This command returns to the parent shell and eliminates the environment variables set earlier.
The QTDIR environment variable needs
to be set when building packages that depend on Qt. Add the following to the .bash_profile initialization script for each
user that builds packages using the Qt libraries. Alternatively, the variable
can be set in the system wide /etc/profile file.
For Method 1 (This is optional, only set this if an application is unable to find the installed libraries):
export QTDIR=/usr
or for Method 2:
export QTDIR=/opt/qt
If you installed Qt using Method 2, you also need to update the following configuration files so that Qt is correctly found by other packages and system processes.
Update the /etc/ld.so.conf and
/etc/man_db.conf files:
cat >> /etc/ld.so.conf << "EOF" &&# Begin qt addition to /etc/ld.so.conf /opt/qt/lib # End qt additionEOF ldconfig && cat >> /etc/man_db.conf << "EOF"# Begin qt addition to man_db.conf MANDATORY_MANPATH /opt/qt/doc/man # End qt addition to man_db.confEOF
Update the PKG_CONFIG_PATH environment
variable in your ~/.bash_profile or
/etc/profile with the following:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig
If you want the Qt executables
in your shell search path, update the PATH environment variable in your ~/.bash_profile or /etc/profile to include /opt/qt/bin.
As with most libraries, there is no explicit configuration to do.
After updating /etc/ld.so.conf as
explained above, run /sbin/ldconfig so that
ldd can find the
shared libraries.
Last updated on 2007-04-22 05:31:15 +0200