]> git.saurik.com Git - wxWidgets.git/blame - docs/gtk/install.txt
minor updates to configure and rpm build steps; link to deb docs
[wxWidgets.git] / docs / gtk / install.txt
CommitLineData
84b62528 1wxWidgets 2.6 for GTK+ installation
e8332ccf 2-----------------------------------
8e1e6fac 3
b55a176b 4IMPORTANT NOTE:
8e1e6fac 5
b55a176b
JS
6 If you experience problems installing, please re-read these
7 instructions and other related files (todo.txt, bugs.txt and
8 osname.txt for your platform if it exists) carefully before
9 mailing wxwin-users or the author. Preferably, try to fix the
10 problem first and then send a patch to the author.
11
fc2171bd 12 When sending bug reports tell us what version of wxWidgets you are
b55a176b 13 using (including the beta) and what compiler on what system. One
8de699dc 14 example: wxGTK 2.6.3, gcc 3.4.5, Fedora Core 4
b55a176b
JS
15
16* The simplest case
17-------------------
c98f0421 18
fc2171bd 19If you compile wxWidgets on Linux for the first time and don't like to read
91b8de8d 20install instructions just do (in the base dir):
c98f0421 21
e8332ccf
JS
22> mkdir buildgtk
23> cd buildgtk
24> ../configure --with-gtk
9b61f868
RR
25> make
26> su <type root password>
27> make install
28> ldconfig
ada974cb 29[if you get "ldconfig: command not found", try using "/sbin/ldconfig"]
034be888 30
ada974cb
VZ
31If you don't do the 'make install' part, you can still use the libraries from
32the buildgtk directory, but they may not be available to other users.
e8332ccf 33
fc2171bd 34If you want to remove wxWidgets on Unix you can do this:
8e1e6fac 35
9b61f868
RR
36> su <type root password>
37> make uninstall
38> ldconfig
cf7a7e13 39
b44bca31
RR
40Note that by default, GTK+ 2.X is used. GTK+ 1.2 can be specified
41with --with-gtk=1.
0dd6e08c 42
2b62ab35
RR
43* The expert case
44-----------------
45
fc2171bd 46If you want to do some more serious cross-platform programming with wxWidgets,
e8332ccf
JS
47such as for GTK+ and Motif, you can now build two complete libraries and use
48them concurrently. To do this, create a separate directory for each build
fc2171bd 49of wxWidgets - you may also want to create different versions of wxWidgets
2e1e7f9d 50and test them concurrently. Most typically, this would be a version configured
fe557b48 51with --enable-debug and one without.
2edb0bde 52
e8332ccf 53For building three versions (one GTK+, one Motif and a debug version of the GTK
51d55e1c 54source) you'd do this:
2b62ab35 55
6a17b868 56mkdir buildmotif
2b62ab35
RR
57cd buildmotif
58../configure --with-motif
59make
60cd ..
61
6a17b868 62mkdir buildgtk
2b62ab35
RR
63cd buildgtk
64../configure --with-gtk
65make
66cd ..
67
6a17b868 68mkdir buildgtkd
2b62ab35 69cd buildgtkd
2b5f62a0 70../configure --with-gtk --enable-debug
2b62ab35
RR
71make
72cd ..
73
fe557b48
SN
74Note that since wxWidgets-2.6.0 you can install all those libraries
75concurrently, you just need to pass the appropriate flags when using them.
76
b55a176b
JS
77* The simplest errors
78---------------------
2a29700e 79
2e1e7f9d
VZ
80For any configure errors: please look at config.log file which was generated
81during configure run, it usually contains some useful information.
82
fe557b48 83configure reports, that you don't have GTK+ 1.2/2.0 installed although you are
2e1e7f9d 84very sure you have. Well, you have installed it, but you also have another
e8332ccf 85version of the GTK+ installed, which you may need to remove including other
6a17b868 86versions of glib (and its headers). Or maybe you installed it in a non-default
2e1e7f9d 87location and configure can't find it there, so please check that your PATH
fe557b48
SN
88variable includes the path to the correct gtk-config/pkg-config. Also check
89that your LD_LIBRARY_PATH or equivalent variable contains the path to GTK+
90libraries if they were installed in a non-default location.
2e1e7f9d
VZ
91
92You get errors from make: please use GNU make instead of the native make
fc2171bd 93program. Currently wxWidgets can be built only with GNU make, BSD make and
2e1e7f9d
VZ
94Solaris make. Other versions might work or not (any which don't have VPATH
95support definitely won't).
96
97You get errors during compilation: The reason is that you probably have a
b55a176b
JS
98broken compiler. GCC 2.8 and earlier versions and egcs are likely to cause
99problems due to incomplete support for C++ and optimisation bugs. Best to use
100GCC 2.95 or later.
2e1e7f9d
VZ
101
102You get immediate segfault when starting any sample or application: This is
103either due to having compiled the library with different flags or options than
104your program - typically you might have the __WXDEBUG__ option set for the
b55a176b
JS
105library but not for your program - or due to using a compiler with optimisation
106bugs.
2e1e7f9d 107
b55a176b
JS
108* The simplest program
109----------------------
2a29700e 110
b55a176b 111Now create your super-application myfoo.cpp and compile anywhere with
cf7a7e13 112
b55a176b 113g++ myfoo.cpp `wx-config --libs --cxxflags` -o myfoo
c98f0421 114
c98f0421 115* GUI libraries
b55a176b 116---------------
c98f0421 117
e8332ccf 118wxWidgets/GTK+ requires the GTK+ library to be installed on your system. It has
8de699dc
MR
119to be a stable version, preferably GTK+ 2.x.y, where x is an even number.
120GTK+ version 1.2 is highly discouraged, but if you decide to still use it,
121please use version 1.2.10 (at least 1.2.3 is required, 1.2.7 is strongly recommended).
91b8de8d 122
e8332ccf 123You can get the newest version of the GTK+ from the GTK+ homepage at:
c98f0421 124
c98f0421 125 http://www.gtk.org
2e1e7f9d
VZ
126
127We also mirror GTK+ at my ftp site. You'll find information about downloading
91b8de8d 128at my homepage.
2e1e7f9d 129
c98f0421 130* Additional libraries
b55a176b 131----------------------
c98f0421 132
fc2171bd 133wxWidgets/Gtk requires a thread library and X libraries known to work with
b55a176b
JS
134threads. This is the case on all commercial Unix-Variants and all
135Linux-Versions that are based on glibc 2 except RedHat 5.0 which is broken in
75fcbf8e
VS
136many aspects. As of writing this, virtually all Linux distributions have
137correct glibc 2 support.
58614078 138
2e1e7f9d
VZ
139You can disable thread support by running
140
141./configure --disable-threads
58614078 142make
034be888 143su <type root password>
8710cf5c 144make install
034be888
RR
145ldconfig
146exit
2e1e7f9d 147
91b8de8d 148* Building wxGTK on OS/2
b55a176b 149------------------------
c98f0421 150
91b8de8d 151Please send comments and question about the OS/2 installation
d21c1b56 152to Stefan Neis <Stefan.Neis@t-online.de> and patches to
fc2171bd 153the wxWidgets mailing list.
c98f0421 154
d21c1b56
SN
155In the following list, the version numbers indicate the configuration that
156was actually used by myself, newer version should cause no problems and
157even older ones are expected to work most of the time.
c98f0421 158
d21c1b56 159You'll need OS/2 Warp (4.51) or eCS(1.0), X-Free86/2 (3.3.6 or newer),
fe557b48
SN
160GTK+ (1.2.5 or newer), emx (0.9d fix 4), a Unix like shell (pdksh-5.2.14 or
161ash), Autoconf (2.57), GNU file utilities (3.13), GNU text utilities (1.19),
d21c1b56
SN
162GNU shell utilites (1.12), m4 (1.4), sed (2.05), grep (2.0), Awk (3.0.3),
163GNU Make (3.75).
91b8de8d 164
d21c1b56
SN
165Preferably, you should have Posix/2 installed and C(PLUS)_INCLUDE_PATH and
166LIBRARY_PATH set up accordingly, however, wxGTK will even work without it.
167Presence of Posix/2 will be auto-detected.
ea0dbf30 168
d21c1b56 169Open an OS/2 prompt and switch to the directory above.
fe557b48
SN
170Set MAKESHELL or MAKE_SHELL (which one is needed depends on the version of
171make) to a Unix like shell, e.g.
d21c1b56 172SET MAKESHELL=ash
d21c1b56
SN
173If you have a really deficient version of GNU make, it might even be
174necessary to set SHELL or even COMSPEC to a unix like shell as well.
fe557b48
SN
175Depending on your installation you might want to also set INSTALL, for me
176it tends to try to use the system's tcpip\pcomos\install.exe which causes
177problems, e.g.
178SET INSTALL=<path_to_src_directory>/install-sh -c
d21c1b56
SN
179
180Notice that the delivered configure scripts are fully OS/2 aware, so you
181can simply run
fe557b48 182 ash -c "configure --with-gtk=1"
d21c1b56 183and make and possibly make install as described above.
9f2d09aa 184
91b8de8d 185* Building wxGTK on SGI
b55a176b 186-----------------------
c98f0421
RR
187
188Using the SGI native compilers, it is recommended that you
2e1e7f9d 189also set CFLAGS and CXXFLAGS before running configure. These
c98f0421
RR
190should be set to :
191
2e1e7f9d 192CFLAGS="-mips3 -n32"
c98f0421
RR
193CXXFLAGS="-mips3 -n32"
194
2e1e7f9d
VZ
195This is essential if you want to use the resultant binaries
196on any other machine than the one it was compiled on. If you
197have a 64bit machine (Octane) you should also do this to ensure
198you don't accidently build the libraries as 64bit (which is
c98f0421
RR
199untested).
200
201The SGI native compiler support has only been tested on Irix 6.5.
202
91b8de8d 203* Create your configuration
b55a176b 204---------------------------
91b8de8d
RR
205
206Usage:
2e1e7f9d 207 ./configure options
91b8de8d
RR
208
209If you want to use system's C and C++ compiler,
6a17b868 210set environment variables CC and CXX as
91b8de8d 211
2e1e7f9d 212 % setenv CC cc
b55a176b
JS
213 % setenv CXX CC
214 % ./configure [options]
91b8de8d 215
c98f0421
RR
216to see all the options please use:
217
2e1e7f9d 218 ./configure --help
c98f0421 219
fc2171bd
JS
220It is recommended to build wxWidgets in another directory (maybe a
221subdirectory of your wxWidgets installation) as this allows you to
2e1e7f9d
VZ
222have multiple configurations (for example, debug and release or GTK
223and Motif) simultaneously.
c98f0421
RR
224
225
226* General options
b55a176b 227-----------------
c98f0421 228
77c85c2b
RR
229Given below are the commands to change the default behaviour,
230i.e. if it says "--disable-threads" it means that threads
231are enabled by default.
232
cf7a7e13
RR
233Normally, you won't have to choose a toolkit, because when
234you download wxGTK, it will default to --with-gtk etc. But
2e1e7f9d 235if you use all of our CVS repository you have to choose a
cf7a7e13 236toolkit. You must do this by running configure with either of:
c98f0421 237
7a1f2d57
RR
238 --with-gtk=2 Use the GTK+ 2.0. Default.
239 --with-gtk=1 Use the GTK+ 1.2.
2e1e7f9d
VZ
240 --with-motif Use either Motif or Lesstif
241 Configure will look for both.
c98f0421
RR
242
243The following options handle the kind of library you want to build.
244
2e1e7f9d 245 --disable-threads Compile without thread support.
c98f0421 246
2e1e7f9d 247 --disable-shared Do not create shared libraries, but
4b6b4dfc 248 build static libraries instead.
bbeb6c2b 249
fc2171bd 250 --enable-monolithic Build wxWidgets as single library instead
75fcbf8e 251 of as several smaller libraries (which is
fc2171bd 252 the default since wxWidgets 2.5.0).
75fcbf8e 253
2e1e7f9d
VZ
254 --disable-optimise Do not optimise the code. Can
255 sometimes be useful for debugging
4b6b4dfc
RR
256 and is required on some architectures
257 such as Sun with gcc 2.8.X which
258 would otherwise produce segvs.
c98f0421 259
37b2afb2 260 --enable-unicode Enable Unicode support.
e8332ccf 261
2e1e7f9d
VZ
262 --enable-profile Add profiling info to the object
263 files. Currently broken, I think.
264
265 --enable-no_rtti Enable compilation without creation of
266 C++ RTTI information in object files.
267 This will speed-up compilation and reduce
4b6b4dfc 268 binary size.
2e1e7f9d
VZ
269
270 --enable-no_exceptions Enable compilation without creation of
271 C++ exception information in object files.
272 This will speed-up compilation and reduce
4b6b4dfc
RR
273 binary size. Also fewer crashes during the
274 actual compilation...
2e1e7f9d
VZ
275
276 --enable-no_deps Enable compilation without creation of
277 dependency information.
278
2edb0bde
VZ
279 --enable-permissive Enable compilation without checking for strict
280 ANSI conformance. Useful to prevent the build
281 dying with errors as soon as you compile with
2e1e7f9d
VZ
282 Solaris' ANSI-defying headers.
283
284 --enable-mem_tracing Add built-in memory tracing.
285
286 --enable-dmalloc Use the dmalloc memory debugger.
287 Read more at www.letters.com/dmalloc/
288
289 --enable-debug_info Add debug info to object files and
290 executables for use with debuggers
291 such as gdb (or its many frontends).
292
293 --enable-debug_flag Define __DEBUG__ and __WXDEBUG__ when
fc2171bd 294 compiling. This enable wxWidgets' very
4b6b4dfc
RR
295 useful internal debugging tricks (such
296 as automatically reporting illegal calls)
297 to work. Note that program and library
2e1e7f9d 298 must be compiled with the same debug
4b6b4dfc 299 options.
c98f0421 300
2b5f62a0
VZ
301 --enable-debug Same as --enable-debug_info and
302 --enable-debug_flag together. Unless you have
303 some very specific needs, you should use this
304 option instead of --enable-debug_info/flag ones
305 separately.
306
c98f0421 307* Feature Options
b55a176b 308-----------------
c98f0421 309
3cdda6cd
RR
310When producing an executable that is linked statically with wxGTK
311you'll be surprised at its immense size. This can sometimes be
fc2171bd 312drastically reduced by removing features from wxWidgets that
3cdda6cd
RR
313are not used in your program. The most relevant such features
314are
315
2e1e7f9d 316 --with-odbc Enables ODBC code. This is disabled
cc977e5f 317 by default because iODBC is under the
2e1e7f9d 318 L-GPL license which is less liberal than
fc2171bd 319 wxWidgets license.
2e1e7f9d
VZ
320
321 --without-libpng Disables PNG image format code.
322
323 --without-libjpeg Disables JPEG image format code.
324
325 --without-libtiff Disables TIFF image format code.
326
75fcbf8e
VS
327 --without-expat Disable XML classes based on Expat parser.
328
2e1e7f9d
VZ
329 --disable-pnm Disables PNM image format code.
330
331 --disable-gif Disables GIF image format code.
332
333 --disable-pcx Disables PCX image format code.
334
335 --disable-iff Disables IFF image format code.
336
337 --disable-resources Disables the use of *.wxr type resources.
338
339 --disable-threads Disables threads. Will also disable sockets.
340
341 --disable-sockets Disables sockets.
342
343 --disable-dnd Disables Drag'n'Drop.
344
345 --disable-clipboard Disables Clipboard.
346
2edb0bde 347 --disable-serial Disables object instance serialisation.
2e1e7f9d
VZ
348
349 --disable-streams Disables the wxStream classes.
350
351 --disable-file Disables the wxFile class.
352
353 --disable-textfile Disables the wxTextFile class.
354
355 --disable-intl Disables the internationalisation.
356
357 --disable-validators Disables validators.
358
359 --disable-accel Disables accelerators support.
360
3cdda6cd
RR
361Apart from disabling certain features you can very often "strip"
362the program of its debugging information resulting in a significant
363reduction in size.
c98f0421 364
75fcbf8e
VS
365Please see the output of "./configure --help" for comprehensive list
366of all configurable options.
367
368
c98f0421 369* Compiling
b55a176b 370-----------
c98f0421
RR
371
372The following must be done in the base directory (e.g. ~/wxGTK
cf7a7e13 373or ~/wxWin or whatever)
c98f0421 374
2e1e7f9d 375Now the makefiles are created (by configure) and you can compile
8710cf5c 376the library by typing:
c98f0421 377
2e1e7f9d 378 make
c98f0421 379
8710cf5c 380make yourself some coffee, as it will take some time. On an old
2e1e7f9d 381386SX possibly two weeks. During compilation, you'll get a few
3cdda6cd 382warning messages depending in your compiler.
c98f0421 383
51d55e1c 384If you want to be more selective, you can change into a specific
2edb0bde 385directory and type "make" there.
c98f0421 386
2edb0bde 387Then you may install the library and its header files under
cf7a7e13
RR
388/usr/local/include/wx and /usr/local/lib respectively. You
389have to log in as root (i.e. run "su" and enter the root
390password) and type
391
2e1e7f9d 392 make install
c98f0421 393
fc2171bd 394You can remove any traces of wxWidgets by typing
c98f0421 395
8e1e6fac 396 make uninstall
2e1e7f9d 397
3cdda6cd 398If you want to save disk space by removing unnecessary
c98f0421
RR
399object-files:
400
2e1e7f9d 401make clean
c98f0421 402
3cdda6cd 403in the various directories will do the work for you.
c98f0421
RR
404
405* Creating a new Project
406--------------------------
407
f3cb6592
RR
4081) The first way uses the installed libraries and header files
409automatically using wx-config
410
b55a176b 411g++ myfoo.cpp `wx-config --cxxflags --libs` -o myfoo
f3cb6592
RR
412
413Using this way, a make file for the minimal sample would look
414like this
415
cc977e5f 416CC = gcc
f3cb6592
RR
417
418minimal: minimal.o
2e1e7f9d 419 $(CC) -o minimal minimal.o `wx-config --libs`
f3cb6592
RR
420
421minimal.o: minimal.cpp mondrian.xpm
b55a176b 422 $(CC) `wx-config --cxxflags` -c minimal.cpp -o minimal.o
f3cb6592 423
2e1e7f9d 424clean:
f3cb6592
RR
425 rm -f *.o minimal
426
fc2171bd 427If your application uses only some of wxWidgets libraries, you can
75fcbf8e
VS
428specify required libraries when running wx-config. For example,
429`wx-config --libs=html,core` will only output link command to link
430with libraries required by core GUI classes and wxHTML classes. See
431the manual for more information on the libraries.
432
2e1e7f9d 4332) The other way creates a project within the source code
fc2171bd 434directories of wxWidgets. For this endeavour, you'll need
79144b8a
RR
435GNU autoconf version 2.14 and add an entry to your Makefile.in
436to the bottom of the configure.in script and run autoconf
437and configure before you can type make.
cf7a7e13 438
91b8de8d 439----------------------
c98f0421
RR
440
441In the hope that it will be useful,
442
510fc784
RR
443 Robert Roebling
444