1 Szymon Stefanek October 2008
2 ###############################################################################
3 General notes for the installation of the 3.4.3 release of KVIrc
4 ###############################################################################
6 This document contains the procedures to compile and install
7 the version 3.4.3 of KVIrc.
9 ###############################################################################
10 # 0. Table of contents
11 ###############################################################################
14 2. Guru-level installation
15 3. Hacker-level installation
16 4. Human (detailed) installation instructions
17 5. How to compile KVIrc with Qt-embedded
18 6. Compiling KVIrc on Mac OS X
19 7. A note about Windows 95/98/ME
21 ###############################################################################
23 ###############################################################################
25 This document contains the procedures to compile and install
26 the version 3.4.3 of KVIrc.
28 If you have found this document in a binary distribution then
29 KVIrc has been probably already installed by your favorite package
30 manager and maybe something is not working as expected. In this case
31 this document and the accompanying FAQ can help you in guessing
34 If you have found this document in a source distribution or you
35 have downloaded it by using the svn then well...
36 this is a standard INSTALL file :)
38 ###############################################################################
39 # 2. Guru installation:
40 ###############################################################################
45 ###############################################################################
46 # 3. Hacker installation:
47 ###############################################################################
49 If you're compiling the svn version of KVirc run ./autogen.sh
50 (You NEED automake >= 1.5 for autogen.sh to run).
52 # export QTDIR="your qtlibrary path"
56 # export KDEDIR="your kde library path"
58 We're using GNU tools here.
61 # ./configure [your options]
65 ###############################################################################
66 # 4. Human (detailed) installation:
67 ###############################################################################
69 If you're not a guru, or have problems with the installation
70 read these instructions carefully.
73 ### Step 0 (ONLY FOR THE SVN VERSION)
76 If (*** AND ONLY IF ***) you're compiling the svn version of kvirc
77 you need to generate the configure script. If you're compiling
78 a downloaded tar.gz (or tar.bz2) package or you don't know what
79 svn is then jump directly to step 1!
81 You need a recent automake and autoconf installed on your system.
82 It is also reccomended to have a recent (matching) libtool installed
83 (libtool is not strictly necessary since KVIrc has a bundled one,
84 but a libtool matching your automake/autoconf versions will probably
85 run better on your system).
91 If it runs without any error (it will tell you "Done") then
92 you may skip to step 1, otherwise read on.
94 First of all check your auomake version.
95 You need automake >= 1.5: older versions will NOT WORK.
96 You can check the automake version with the command
100 If your automake version is lower than 1.5 upgrade it.
101 You can find it at http://www.gnu.org/software/automake/ (source)
102 or on your favorite distribution site as auto-installing package.
104 Automake installation tip: automake installs in /usr/local/
105 by default. If you have an older automake installation that
106 resides in /usr/ it's better to remove it or (better) overwrite it
107 with the new installation.
108 If you choose to overwrite the old installation with the new
109 one then just use "./configure --prefix=/usr" as the automake's
111 If you choose to remove the old version then the files to be
112 removed are /usr/bin/automake /usr/bin/aclocal /usr/share/automake
113 /usr/share/aclocal. If you feel unsure about removing it, rename it.
115 If the script fails to run then you might try
117 # ./autogen.sh --bundled-libtool
119 to force the usage of the bundled libtool version.
120 If you later have unexplicable problems with the compilation tools
121 you might also try the bundled libtool.
124 ### Step 1 : Matching the requirements
127 - You NEED a fully working C++ compiler.
129 Most linux distributions have it pre-installed and if you have
130 already compiled other programs before then you're probably ok,
131 so actually skip this check and go ahead. If anything fails
132 in the following steps then this is the very first thing to verify.
133 A broken compiler installation usually manifests itself
134 in failed ./configure tests (dlopen capabilities).
140 on the commandline. If it says something about "command not found"
141 then you miss some gcc related package. Install it from the distro cd.
144 - You NEED the Qt library.
146 You can download the latest version from ftp://ftp.trolltech.com.
147 The main Qt www site is http://www.trolltech.com.
148 Note for the GPL maniacs: Qt IS GPL.
149 The minimum required version is 3.1.2 (older versions *might* work)
150 Download and install it by following the rules
151 explained in the excellent documentation that comes with the library.
154 - You need a decent pthread implementation.
156 This is usually included in your distribution and is probably
157 already installed. The library is called libpthread.so.
158 You can look for it with the "find" command:
160 # find / -name libpthread.so
162 On my system the output is:
164 # /usr/lib/libpthread.so
166 If you don't have it (the configure script will tell you)
167 you can download it from your favorite GNU mirror.
169 On Solaris you can use the native libthread.so library instead
170 but you will have to pass the specific option to configure (see below).
171 FreeBSD has a native implementation of pthreads in libc_r and
172 the gcc compiler has a special -pthread flag to link to it.
173 If you're on FreeBSD, use the --with-freebsd-pthread configure
174 option and make sure that you don't have other pthread wrappers
175 installed (that might collide with the native header files).
177 The configure script will also fail if the library is
178 hidden somewhere on your system (eg. not in /lib , /usr/lib or
179 /usr/local/lib): you should probably move it.
182 - You need the dynamic linker interface library libdl.so.
184 This is usually installed on your system , so don't care until
185 configure complatins about it. Some system have the interface
186 builtin in libc. The configure script can detect it.
189 - (Optional) If you want to compile the KDE integration support
190 you obviousy need KDE. The kdelibs package should suffice.
193 - (Optional) If you want the translations to non-english languages to work
194 then you need the GNU gettext package. In particular KVIrc uses
197 This is usually included in your distribution and is probably
198 already installed. You can check it by running
202 KVIrc will not complain if the command above is missing: it will
203 just skip the creation of the translation files.
204 If the command above fails then you need to install the gettext package
205 if you want any language other than english.
208 - (Optional) If you want DCC VOICE to support the gsm codec,
209 you need a recent copy of libgsm. This is not strictly required
210 at compile time since KVIrc will look for the library at run-time,
211 and only if the DCC VOICE with the gsm codec is requested.
212 You can check for libgsm using the 'find' command.
214 # find / -name libgsm*
216 The output should be sometihg like
220 This library is included in most distributions. Some distros ship
221 only the static version of the library "libgsm.a": if the previous
222 find returned only something similar to "/usr/lib/libgsm.a" , you might
223 create manually the shared archive by running:
226 # ld --whole-archive -shared -o libgsm.so.1 libgsm.a
227 # ln -s libgsm.so.1 libgsm.so
230 If you don't have it installed at all, you might have a look in your
231 distribution CD, or download it from the web.
234 - (Optional) If you want the /snd plugin to play various audio formats
235 you either need a running artsd, a running esd or a reasonably recent
236 audiofile library. Without these KVIrc will be only able to play *.au
240 - (Optional) If you want to generate the on-line documentation
241 you also need perl: any version will do (I guess).
244 - (Optional) If you want the secure socket layer support to be compiled
245 you need the OpenSSL library and headers. (libssl.so and openssl/ssl.h)
248 - (Optional) If you want perl scripting support to be compiled
249 you need a working perl installation. Your libperl.so MUST be compiled
250 with the MULTIPLICITY option. (You can check it with perl -V).
253 ### Step 2 : Running the configure script (mandatory)
256 First of all you must run the configure script that will guess some
257 info about your system and prepare the compilation.
258 You may try to "simply run" it and check if it works...the configure
259 script tries to be smart , but in some cases it will fail.
261 So before running the script make sure that the enviroinement
262 variable $QTDIR points to the right location. This will help
263 in finding the correct version of Qt.
264 You might eventually set it with the command:
266 # export QTDIR="your qt dir"
268 On my system qt is installed in /usr/local/kde/qt
269 so I actually execute
271 # export QTDIR="/usr/local/kde/qt"
273 If you want to compile the KDE support you might want to do the same
276 # export KDEDIR="your kde dir"
278 In my case KDE is installed in /usr/local/kde so I use
280 # export KDEDIR="/usr/local/kde"
282 The configure script has a lot of options that can be listed by using
286 Here's a list with explainations (the most common are at the top):
289 This is for debugging and reporting problems.
290 It sets the compiler options in order to leave the debugging
291 informations into the kvirc executable and the libraries.
292 In this way you will be able to produce a gdb backtrace
294 YOU NEED THIS OPTION IF YOU WANT TO REPORT A PROGRAM CRASH.
297 Asks the compiler to use pipes instead of files for the
298 compilation stage. The pipes will help in reducing disk usage and
299 will probably shorten the compilation a bit. Use this option if
300 your platform supports it.
302 --with-qt-library-dir=<DIR>
303 Look for the qt library in <DIR>.
304 You might want to use this if the configure script has trouble
305 in finding the qt library.
306 You should have no problems if you use export QTDIR="<DIR>"
307 before launching the configure script, but it might help you
308 if you have a non standard Qt installation.
310 --with-qt-include-dir=<DIR>
311 Look for the qt headers in <DIR>.
312 You might want to use this if the configure script has trouble
313 in finding the qt headers. It may especially help if your headers
314 are in a place different than $QTDIR/include (and thus you have
315 a non standard installation)
318 Use the qt meta-object compiler found in <PATH>
319 The path is usually $QTDIR/bin/moc , and the
320 configure script will find it if you have a standard
321 Qt installation and $QTDIR points to the right directory.
322 Thus should have no problems if you use export QTDIR="<DIR>"
323 before launching the configure script, but it might help you
324 if you have a non standard Qt installation.
325 This will also help if you have the moc compiler renamed
326 in some way: like "moc2" or sth...
327 <PATH> in this case is a FULL path: directory/program_name!
330 This disables Qt checking at compilation time.
331 If this is the only way to compile and run
332 the kvirc executable , then there is something
333 wrong with the configure script.
335 --without-kde-support
336 The configure script will look for the KDE headers and libraries
337 and if found it will enable the KDE support. If you don't want
338 the KDE support even if KDE is detected, just use this switch.
340 --with-kde-library-dir=<DIR>
341 Look for the KDE libraries in <DIR>
342 If $KDEDIR points to the right place, you shouldn't need this.
344 --with-kde-include-dir=<DIR>
345 Look for the KDE headers in <DIR>
346 If $KDEDIR points to the right place, you shouldn't need this.
348 --with-kde-services-dir=<DIR>
349 Install the kde service protocol files in <DIR>
350 If $KDEDIR points to the right place, you shouldn't need this.
351 This is also non-critical for kvirc: if the configure script
352 can't find this directory, you will only looose the support for
353 irc:// urls in konqueror
356 Similar to --without-qt-check but for KDE.
358 --enable-optimisation=<NUMBER>
359 Enables the compiler optimisation flag -o<NUMBER>.
360 Possible values are 0 , 1, 2 and 3 (but if you compiler supports
361 more optimisation levels , you might use other numbers here).
362 Increases compilation time but may produce a slightly faster
365 --with-other-libs=<libraries>
366 Explicitly link to the specified libraries.
367 Example: --with-other-libs="-lmylib -lstrangesystemsupport"
369 --with-other-ldirs=<paths>
370 Explicitly add the specified library search paths
371 Example: --with-other-ldirs="-L/home/pippo/lib/ -L/my/library/"
374 Explicitly add the specified include search path
375 Example: --with-other-idirs="-I/home/pippo/include/ -I/tmp/inc/"
378 This is an experimental support for object prelinking that improves
379 significantly the executable startup time. In order to use it you
380 need to have the "objprelink" program in the PATH. The objprelink
381 program is included in the distribution in the admin directory.
382 In order to use it, you will need to:
386 # cp objprelink /somewhere_on_your_path
388 All this AFTER running ./configure and BEFORE running make.
390 --with-no-pthread-check
391 Do not check if the pthread stuff works.
392 If configure fails in the pthread library check , you might want to
393 try this...(but then you will have really to "pray" that
394 the check has been broken by some "unusual" conditions and the
395 compilation will succeed).
398 Specifies explicitly the path to the X header files.
399 You might want to use this if the configure script
400 has trouble in finding it.
403 Specifies explicitly the path to the X libraries.
404 You might want to use this if the configure script
405 has trouble in finding it.
407 --with-qt-name=<NAME>
408 Use <NAME> instead of "qt" as the Qt library name.
409 This is useful on systems where Qt has been installed with
410 a name different than the default "qt".
411 It happens often that to allow multiple copies of qt to work
412 the newest have the version name appended to it.
413 For example, on FreeBSD I have found "qt" being Qt1.* and
414 "qt2" being Qt 2.*. Since you need Qt 2.* for kvirc to work,
415 you will need to use --with-qt-name=qt2.
416 If you use this option, you will probably also need to remap
417 the moc compiler path/name with --with-qt-moc.
420 Disable checking for the multithreaded version of Qt.
421 By default , KVIrc will try to link to the multithreaded version
422 if found on the system.
423 NOTE: if you enable the KDE support , KVIrc MUST be linked to the
424 qt library that KDE is linked to.
427 KVIrc contains some ix86 assembly routines that *could*
428 performs some things faster (this is not always true, depends
429 on the compiler). You might want to try it if your kvirc seems to
432 --without-ipv6-support
433 The IPV6 support is compiled by default on the platforms that
434 support it: this option disables it.
435 Even if you have a plain IPV4-only connection, you might want to
436 keep the IPV6 support: you will be able to lookup IPV6 hostnames.
438 --without-system-memmove
439 This will disable the use of the system memmove() memcpy() and
440 memset() functions and enable the bundled implementations. Use
441 it if you have undefined references to these functions while
444 --with-ignore-sigalarm
445 This is a hack mainly for Solaris.
446 Use this option if kvirc exits with no apparent reason and
447 the system prints a message related to an "Alarm" :)
449 This is a mail that suggests an explaination for the SIGALARM fault.
450 If you experience the problem please drop me a mail at pragma at kvirc dot net
451 and we'll try to look for a solution.
453 From: "Andre Stechert" (astechert at email dot com)
454 Date: 26/7/2005 09:36
457 I noticed in your readme that you were having problems with sigalarm
458 in your solaris port and you weren't sure why. I quickly scanned your
459 source code and noticed that you use usleep and threads. That's the problem,
460 if you haven't already figured it out. On Solaris, usleep is implemented with
461 SIGALARM. So is threading. So if you the active thread changes while
462 a usleep is in progress, bang, the process is dead.
464 --without-crypt-support
465 Disables the cryptographic engines and the whole
466 cryptography/text-transformation support. Produces a slightly
467 smaller executable. Anyway, if you don't know what the
468 ctryptography/text-transformation
469 support is ,I suggest you to avoid using this option.
473 This enables the compilation of the new KVS parser, currently
474 under heavy development. This will produce a bigger and possibly
475 unstable executable: do not use if you don't know what you're doing.
477 --enable-new-kvs-only
479 This hardwires the new KVS parser to be used as the main scripting
480 engine in KVIrc. Be aware that the new KVS engine is NOT YET 100% COMPLETE
481 so some scripts will simply fail.
483 --without-transparency
484 This option disables pseudo-transparency support.
485 The pseudo transparency support makes the KVirc windows
486 look like semi-transparent (this is NOT real transparency: this is
487 just a nice-looking hack).
488 If KDE support is enabled, KVirc will have an option that
489 makes all windows use a faded KDE desktop background image
490 as background. Without KDE support you will be able to choose
491 a fake background image and use it as background. (You can still
492 choose your desktop wallpaper: this will (more-or-less) work in
493 all the window managers).
494 It is cool-looking but usually eats some memory when enabled.
495 It also eats some executable size.
496 So this option allows to disable the pseudo-transparency.
498 --with-solaris-lthread
499 If you're on Solaris and don't have the pthread library (A wrapper
500 I guess) you might try this option: it attempts to use the native
501 Solaris threading support.
503 --with-freebsd-pthread
504 If you're on FreeBSD, you NEED this option. This enables the usage
505 of the native FreeBSD pthread implementation found in libc_r.
506 This requires you to use the native gcc compiler: it has a special
507 -pthread flag that enables the linkage to libc_r instead
511 Link to libresolv. I guess that this is required for Solaris
514 Link to libsocket. I guess that this is required for Solaris
517 Link to libnsl. I guess that this is required for Solaris
520 Link to libcompat. This might be required for some systems...
521 but I have no idea which ones. If you find it useful: mail me.
524 Disables compiler runtime type information generation.
525 This is probably needed only with qt-embedded.
526 DON'T use it if you don't exactly know what it does.
527 Actually this may even make KVIrc crash in some situations.
528 For example the KDE sources use __dynamic_cast...
531 Disables completely the X Windows support.
532 This is useful in environments where X is not needed to compile KVIrc
533 such as Qt-Mac on MacOSX, QtEmbedded or Windows.
534 This switch implies also --without-x-bell
537 Disables the usage of the XBell function (needed if you want to
538 compile KVIrc with qt-embedded (no X at all))
539 This is implied by --disable-x-support
542 You need this to compile KVIrc with qt-embedded
545 Disables support for inter-process communication.
546 You will be not able to send remote commands to running
547 kvirc sessions: this basically means that every time you run
548 the kvirc executable , a new session will be started.
549 If you don't use this switch, a new session will be started
550 only if no session is running on the same display or
551 "new session" has been forced by a commandline switch.
552 If a session is already running, the commandline will be
553 passed to that session via IPC (X-event-based communication).
554 This option saves some KB of the KVIrc executable,
555 so if you're really short in memory , you might use it,
556 otherwise, IPC is a nice feature.
559 You should not need this option.
560 It disables compilation of code that relies on a particular
561 compiler feature (jumping to a dynamic label with a goto).
562 Not all compilers support this , but configure shoud detect
563 it automatically. Anyway , if you get compilation errors on
564 kvi_ircview.cpp, you may try this option...
565 This may also help if the configure script seems to hang
566 when checking for the "compiler dynamic label support".
568 --without-splash-screen
569 Do not compile the splash screen code.
570 This will remove you that nice "banner" image that pops up
571 while kvirc is starting up. It will maybe help in making an
572 executable smaller by a couple of KB and save a couple
573 of extra milliseconds during the startup. Use it if you're
574 tring to build a performance critical executable and you're
575 short both in memory and CPU time :)
578 Explicitly disable the usage of the GSM library. This will
579 disable the DCC VOICE gsm codec but might help when the
580 compilation stops complaining of something related to GSM :)
583 Explicitly disable the DCC VOICE sound support. This might help
584 if you have problems in compilation of src/modules/dcc/voice.cpp.
585 It will disable the sound support
586 (and thus make DCC VOICE not usable).
589 Disables the secure socket layer support. The SSL support is
590 automatically enabled if OpenSSL is detected at ./configure time.
591 This option forces it to be left out.
593 --with-memory-profile
594 Debug stuff...enables memory allocation profiling (don't use it :)
597 Enables malloc() memory checks. This will print a nice message
598 if your system goes out of memory...
599 It can't save you from buying new RAM,
600 but at least you will know that your system went out of memory
601 and it is not a proper kvirc fault. Actually you probably have
602 no reason in using it.
605 Minor hash table optimisations: higher memory usage but
606 faster user lookups. Use it if you often stay in channels with
607 a lot of users. (this is not critical anyway)
610 Asks the compiler/linker to include profiling informations in the
611 executable. This is useful only if you want to profile KVIrc by
612 using the gprof program. Note that this will generate a bigger
613 and slower executable.
616 Forcibly disable perl support.
618 So finally you have to run
620 # ./configure <your options>
622 For example , my common options are:
624 # ./configure --enable-pipes --enable-debug
626 On FreeBSD I have found useful this command line:
628 # ./configure --with-qt-name=qt2 --with-qt-moc=/<PATH_HERE>/moc2 \
629 --with-freebsd-pthread
631 Once the configure script ran succesfully you can go to the next step.
634 ### Step 3 : Compiling (mandatory)
638 Cross your fingers and run
642 If your make is not a GNU make (this happens on FreeBSD for example)
643 you should use "gmake" instead.
644 The compilation process will take from 6-7 minutes to several hours
645 depending on the machine capabilities and load.
646 If you have a slow cpu but have a couple of computers in a lan you
647 might consider using distcc to distribute the compilation.
649 Once the compilation has been succesfull, run
653 Same as above: use "gmake install" if your make is not GNU make.
655 This will install the executable in /usr/local/bin
656 (if you don't have specified a different --prefix option in
657 the configure script) , the libraries in /usr/local/lib
658 and the shared data in /usr/local/share/kvirc.
659 If you had a previous kvirc installation , the default prefix
660 will be referring to the directory where the old kvirc
661 executable was found.
663 Make sure that /usr/local/lib is in your /etc/ld.so.conf ,
664 if it isn't there , put it there and run
668 If you have decided to use the KDE support the installation
669 might have placed all these files in your $KDEDIR tree
670 instead of /usr/local. In this case you should be OK since
671 KDE requires its library dir to be in /etc/ld.so.conf
674 ### Step 4: Having fun
682 ###############################################################################
683 # 5. Compiling KVIrc on qt-embedded
684 ###############################################################################
686 Do you want KVIrc 3 on your hand computer ?
687 On your Nokia 9999910 ?
688 On your LINUX CONSOLE?
690 Well, for the third it's really easy, just follow carefully those steps:
692 1. Install qt-embedded libraries (including the development files).
693 This can be as easy as: apt-get install libqt-emb-dev on Debian.
695 2. cd to the KVIrc3 source directory
697 3. run configure with the following parameters:
699 # ./configure --with-qt-name=qte --with-fno-rtti --without-x-calls
700 --without-ipc --without-splash-screen --without-transparency
701 --with-qt-embedded --without-x-bell
703 then run make and make install as usual
705 4. Try to have a life for the next minutes while kvirc3 compiles
707 5. You need your kernel with framebuffer support (it's under 'Console')
708 so if your kernel don't have it reconfigure and recompile your kernel.
710 6. switch to a console
712 7. export QTDIR=[path] On Debian is '/usr'
714 8. Read http://doc.trolltech.com/3.0/envvars.html and configure your
715 environment vars until kvirc3-emb loads (it will give you an error
716 indicating what went wrong else). Pay especial attention to
717 QWS_MOUSE_PROTO, QWS_CARD_SLOT and QWS_DISPLAY
721 ###############################################################################
722 # 6. Compiling KVIrc on MacOSX
723 ###############################################################################
725 There is a detailed compilation and installation HOWTO for MacOSX systems
726 located in the doc dorectory.
728 ###############################################################################
729 # 7. A note about Windows 95/98/ME
730 ###############################################################################
732 On Windows versions prior to 2000 the KVIrc binary may refuse to start
733 because of an incompatible msvcrt.dll included in the distribution.
735 If this happens to you then you may try the following tricks:
737 - Find msvcrt.dll in your C:\Windows directory. It may also be
738 in C:\Windows\System or C:\Windows\System32
739 Copy it to the KVIrc installation folder overwriting the existing
740 msvcrt.dll shipped with kvirc.
742 - Find msvcrt.dll somewhere on the net. An url hint might be:
743 http://www.dll-files.com/dllindex/dll-files.shtml?msvcrt
744 Download the file and copy it to the KVIrc installation folder
745 overwriting the existing msvcrt.dll shipped with kvirc.
747 If none of the two steps work for you please write a mail to
748 pragma at kvirc dot net reporting your exact Windows version and build
749 and including the exact messages that the system reports when trying
750 to run the KVIrc executable.
752 Thanx to Dusan Hokuv for reporting this and suggesting the fixes.