]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/INSTALL.texi
Adds warning about gxx-3.3.
[lilypond.git] / Documentation / topdocs / INSTALL.texi
1 @node Top, , , (dir)
2 @top
3 @comment  node-name,  next,  previous,  up\input texinfo @c -*-texinfo-*-
4 @setfilename INSTALL.info
5 @settitle INSTALL - compiling and installing GNU LilyPond
6
7 @html
8 <!--- @@WEB-TITLE@@=Installation Instructions --->
9 @end html
10
11 @contents
12
13 @chapter INSTALL - compiling and installing GNU LilyPond
14
15
16 This document describes how to build LilyPond on Unix platforms.  It
17 is also known to run and compile on Windows NT/95/98/ME/XP as well.
18 More information on this topic can be found at the
19 @uref{http://www.lilypond.org/cygwin/, LilyPond on Windows page}.
20
21
22 @html
23 <a name="download-source">
24 @end html
25
26 @section Downloading
27
28 Even numbered versions are `stable'. The webpages for the stable version
29 (1.4) reside @uref{http://www.gnu.org/software/lilypond, on the GNU
30 servers}. Big enhancements go into the latest odd numbered version
31 (1.5), whose webpages are on @uref{http://www.lilypond.org/,the lilypond
32 site}.
33
34 Building LilyPond is an involved process. We advise to use binary
35 packages if these are available for your platform.
36
37 @subsection Source code
38
39   If you want to compile LilyPond from source, download here:
40 @itemize @bullet
41 @item Download development releases from
42 @c Hmm, these won't show up in lilypond.org/stats
43 @c Otoh, lilypond.org is not updated when release mail arrives
44 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/} by FTP and
45 @uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/}, by HTTP.
46 @item @uref{ftp://sca.uwaterloo.ca/pub/} by FTP (Canadian mirror)
47 @item at @code{lilypond.org} 
48 @uref{ftp://ftp.lilypond.org/pub/LilyPond/} by FTP and
49 @uref{http://www.lilypond.org/ftp/} by HTTP.
50 @end itemize
51
52
53 For Red Hat Linux and SuSE Linux, @file{.spec} files are included in the
54 tarball; see instructions below.
55
56 Of course, if your platform supports LilyPond, such as Debian GNU/Linux,
57 FreeBSD, OpenBSD or NetBSD, you're encouraged to use the native build
58 from source drill.
59
60 The latest development version is also available through anonymous
61 CVS. See @uref{http://savannah.gnu.org/cvs/?group=lilypond}.
62
63 CVS does not contain generated files.  To create @file{configure}, run
64 @quotation
65 @example
66 ./autogen.sh
67 @end example
68 @end quotation
69
70 @html
71 <a name="download-binaries">
72 @end html
73
74
75
76 @subsection Precompiled binaries
77
78 If you want to track bleeding edge development, try:
79
80 @itemize @bullet
81 @item @uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond/, Debian
82 GNU/Linux} usually has the latest binaries for the most useful stable
83 and development versions, while
84 @item @uref{http://rpmfind.net/linux/mandrake/cooker/contrib/RPMS/,
85 Mandrake Cooker} also provides fairly recent versions.
86 @end itemize
87
88 Binaries are made available for other popular platforms, but as we need
89 to compile them ourselves, they are not updated for every version
90 released.
91
92 @itemize @bullet
93 @item @uref{http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#lilypond,Red Hat i386}
94 @item @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/SuSE, SuSE}
95 @item @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/linuxppc/,
96 LinuxPPC}
97 @item
98 @uref{http://www.lilypond.org/gnu-windows/, Windows}
99 @end itemize
100
101 @subsection Upgrading
102
103 There are two options for upgrading sources.
104
105 @itemize
106 @item if you have an unpacked source tree of a previous version, you
107 may the patches.
108
109 @emph{If you upgrade by patching do remember to rerun autoconf after
110 applying the patch}.
111
112 @item if you have the @code{.tar.gz} file of a previous release, you can
113 use
114 @uref{ftp://ftp.xcf.berkeley.edu/pub/xdelta/, xdelta}.
115  This is much safer than using patches, and is the recommended way.
116
117 The following command produces @file{lilypond-1.4.3.tar.gz} from
118 @file{lilypond-1.4.2.tar.gz} identical (up to compression dates) to the .3
119 on the FTP site.
120 @example
121   xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz
122 @end example
123 @end itemize
124
125 @subsection Font problems.
126
127 If you are upgrading from a previous version of LilyPond, be sure to
128 remove all old font files. These include @file{.pk} and @file{.tfm} files
129 that may be located in @file{/var/lib/texmf}, @file{/var/spool/texmf},
130 @file{/var/tmp/texmf} or @file{@var{prefix}/share/lilypond/fonts/}.  A
131 script automating this has been included, see
132 @file{buildscripts/clean-fonts.sh}.
133
134
135
136
137 @section Requirements
138
139 @subsection Compilation
140
141 You need the following packages to compile Lilypond.
142
143 @itemize
144 @item The GNU c++ compiler (version 2.95.2 or newer).
145 EGCS 1.1 may work, but is no longer supported.
146 Check out @uref{ftp://ftp.gnu.org/gnu/gcc/, the gcc site}.
147
148 WARNING: if you choose to upgrade to GCC 3.x, enquire if your
149 distribution supports g++ 3.x and flex.  At the time of writing (Fri
150 Jul 5 2002), @strong{no} distribution that we know of ships a flex
151 that generates gcc-3.1.x compliant C++ code.
152
153 WARNING: although many distributions now support g++ 3.x and flex,
154 Lilypond cannot be built with gcc-3.3 and g++-3.3.  Please use gxx-3.2
155 instead.
156
157 @item Python (version 2.1 or newer).
158 Check out @uref{http://www.python.org, the python website}.
159
160 @item GUILE (version 1.6 or newer).
161 Check out
162 @uref{http://www.gnu.org/software/guile/guile.html,the GUILE webpage}.
163
164 @item GNU Make. 
165 Check out
166 @uref{ftp://ftp.gnu.org/gnu/make/, the GNU
167 make FTP directory}.
168
169 @item Flex (version 2.5.4a or newer). 
170 Check out @uref{http://www.gnu.org/software/flex/,the Flex webpage}.
171
172 WARNING: plain Flex 2.5.4(a) generates invalid C++ code.  GCC 3.x
173 chokes on this.  If you wish to use GCC 3.x, make sure that your
174 distribution supports g++ 3.x and flex.  For workarounds, see
175 lexer-gcc-3.0.patch and lexer-gcc-3.1.sh in the source directory.
176
177 @item Bison (version 1.25 or newer).
178 Check out @uref{http://www.gnu.org/software/bison/,the bison  webpage}
179
180 @item @TeX{}.
181
182 @TeX{} is used as an output backend.
183
184 Also, @TeX{}'s libkpathsea is used to find the fonts (@file{.mf},
185 @file{.afm}, @file{.tfm}).  Make sure you have tetex 1.0 or newer
186 (1.0.6 is known to work).  You may need to install a tetex-devel (or
187 tetex-dev or libkpathsea-dev) package too.
188
189 @item Texinfo (version 4.2 or newer).
190 The documentation of lily is written in texinfo.  Check out
191 @uref{ftp://ftp.gnu.org/gnu/texinfo/,the texinfo FTP directory}.
192
193 @item The geometry package for LaTeX is needed to use ly2dvi.  
194 It is available at
195 @uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,the
196 FTP directory for @code{geometry}}. This package is normally included
197 with the @TeX{} distribution.
198
199 @item kpathsea, a library for searching (@TeX{}) files.  @code{kpathsea} is
200 usually included with your installation of @TeX{}.  You may need to
201 install a tetex-devel or tetex-dev package too. If kpathsea is not
202 installed in a directory where the compiler normally looks, read the
203 hints for Slackware below.
204
205 In the very unlikely case that kpathsea is not available for your
206 platform (ie, you're not running GNU/Linux, Windows, or any recent
207 UNIX), you can compile LilyPond without kpathsea support.  In that case,
208 you'll probably have to indicate where @TeX{}'s tfm files live.  Invoke
209 configure something like:
210
211 @quotation
212 @example
213 ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
214 @end example
215 @end quotation
216
217 @end itemize
218
219 @subsection Running requirements
220
221 GNU LilyPond does use a lot of resources. For operation you need the
222 following software
223
224 @itemize @bullet
225 @item @TeX{}.
226 @item Xdvi and Ghostscript
227 @item GUILE 1.4, or newer.
228 Check out
229 @uref{http://www.gnu.org/software/guile.html,the GUILE webpage}
230 @end itemize
231
232 For running LilyPond successfully you have to help @TeX{} and MetaFont find
233 various files.  The recommended way of doing so is adjusting the
234 environment variables in the start-up scripts of your shell. Appropriate
235 Csh and bourne sh scripts are left in
236 @file{buildscripts/out/lilypond-profile} and
237 @file{buildscripts/out/lilypond-login} after compilation.
238
239 LilyPond is a big and slow program.  A fast CPU and plenty of RAM is
240 recommended for comfortable use.
241
242 @subsection Building documentation
243
244 You can view the documentation online at
245 @uref{http://www.lilypond.org/stable/Documentation/out-www/}, but you
246 can also build it locally. This process requires a successful compile of
247 lilypond. The documentation is built by issuing
248 @example 
249
250   make web-doc
251  
252 @end example 
253
254 Building the website requires some additional tools: 
255
256 @itemize @bullet
257 @item The netpbm utilities, see @uref{http://netpbm.sourceforge.net/}
258 @item mftrace 1.0 or newer, needed for generating PostScript Type1
259 fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/mftrace/}.  You
260 will need to install some additional packages to get mftrace to work.
261 @end itemize
262
263 @section Building LilyPond
264
265 to install GNU LilyPond, type:
266 @example 
267         gunzip -c lilypond-x.y.z | tar xf -
268         cd lilypond-x.y.z
269         ./configure             # run with --help to see appropriate options
270         make
271         make install
272         sh buildscripts/clean-fonts.sh      
273 @end example 
274
275 If you are doing an upgrade, you should remove all @file{feta}
276 @code{.pk} and @file{.tfm} files.  A script has been provided to do the
277 work for you, see @file{buildscripts/clean-fonts.sh}.
278
279
280 If you are not root, you should choose a @code{--prefix} argument that
281 points into your home directory, eg.
282 @example 
283
284         ./configure --prefix=$HOME/usr
285  
286 @end example 
287
288 In this case, you have to insert the contents of
289 @code{buildscripts/out/lilypond-login} or
290 @code{buildscripts/out/lilypond-profile} into your start up scripts by
291 hand.
292
293
294
295 @subsection Configuring for multiple platforms
296
297 If you want to build multiple versions of LilyPond with different
298 configuration settings, you can use the @code{--enable-config=CONF}
299 option of configure.  You should use @samp{make conf=CONF} to generate
300 the output in @file{out-CONF}.  Example: suppose I want to build with
301 and without profiling.  Then I'd use the following for the normal
302 build,
303 @c prefix=~ ?
304 @example 
305
306       ./configure --prefix=$HOME/usr/ --enable-checking
307       make
308       make install
309 @end example 
310
311 and for the profiling version, I specify a different configuration.
312
313 @example 
314
315       ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
316       make conf=prof
317       make conf=prof install
318
319 @end example 
320
321
322
323
324
325 @section Emacs mode
326
327 An Emacs mode for entering music and running LilyPond is contained in
328 the source archive as @file{lilypond-mode.el},
329 @file{lilypond-indent.el}, @file{lilypond-font-lock.el} and 
330 @file{lilypond.words}.
331 You should install these files to a directory included in your 
332 @var{load-path}. File @file{lilypond-init.el} should be placed to 
333 @var{load-path}@file{/site-start.d/} or appended to your @file{~/.emacs}
334 or @file{~/.emacs.el}. If you have installed a precompiled LilyPond 
335 package, these files can be found in @file{/usr/share/doc/lilypond-x.y.z/}. 
336
337 As a user, you may want add your source path or, e.g., @file{~/site-lisp/} 
338 to your @var{load-path}. Append the following line (modified) to your 
339 @file{~/.emacs}:
340 @quotation
341 @example
342 (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
343 @end example
344 @end quotation
345
346 If you have the latest LilyPond-1.4.x Debian package, LilyPond-mode is
347 automatically loaded, you not even need to modify your @code{~/.emacs}
348 file.
349
350 @section Vim mode
351
352 A Vim mode for entering music and running LilyPond is contained in
353 the source archive. Append the content of @file{vimrc} to @file{~/.vimrc}
354 to get shortcuts. Install file @file{lilypond.words} to @file{~/.vim/} to 
355 get auto-completion. Syntax highlighting you get by installing 
356 @file{lilypond.vim} to @file{~/.vim/syntax/} and appending the following
357 to @file{~/.vim/filetype.vim}:
358 @quotation
359 @example
360 " my filetype file
361 if exists("did_load_filetypes")
362   finish
363 endif
364 augroup filetypedetect
365   au! BufRead,BufNewFile  *.ly          setfiletype lilypond
366 augroup
367 @end example
368 @end quotation
369
370 @section Compiling for distributions 
371
372 @subsection Red Hat Linux
373
374 Red Hat 7.x i386 RPMS are available from
375 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/}.  For running on
376 a Red Hat system you need these packages: guile, tetex, tetex-latex,
377 tetex-dvips, libstdc++, python, ghostscript.
378
379 You can also compile them yourself.  A spec file is in
380 @file{make/out/lilypond.redhat.spec}. This file is distributed along
381 with the sources.  You can make the rpm by issuing
382 @example 
383
384         cp lilypond-x.y.z.tar.gz /usr/src/redhat/SOURCES/
385         tar xfz lilypond-x.y.z.tar.gz
386         rpm -bb lilypond-x.y.z/make/out/lilypond.redhat.spec
387         rpm -i /usr/src/redhat/RPMS/i386/lilypond-x.y.z
388
389 @end example 
390
391 For compilation on a Red Hat system you need these packages, in
392 addition to the those needed for running: glibc-devel, gcc-c++,
393 libstdc++-devel, guile-devel, flex, bison, texinfo, groff, mftrace,
394 netpbm-progs, autotrace, t1utils.
395
396
397
398 @subsection LinuxPPC
399
400
401 Some LinuxPPC RPMS should available from
402 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/}.
403
404 A LinuxPPC RPM can be made using the @file{lilypond.redhat.spec} file.
405
406 @subsection SuSE
407
408 Some SUSE RPMS should available from
409 @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/SuSE}.
410
411 You can also compile a RPM for SUSE yourself.  A spec file is in
412 @file{make/out/lilypond.suse.spec}, see the instructions for building
413 the Red Hat RPM.
414
415 You must have the following packages: guile tcsh tetex te_latex te_kpath
416 te_mpost libpng python gpp libgpp gettext autoconf netpbm libnetpb
417 gs_serv gs_lib gs_fonts guile
418
419 @subsection Slackware
420
421 No precompiled packages for Slackware are available.
422
423 Problems have been reported with Slackware 7.0; apparently, it ships
424 with a faulty compiler. Do not compile LilyPond with -O2 on this
425 platform.
426
427 At least on Slackware 8.0, you have to manually specify the paths to the
428 Kpathsea library, see the section on kpathsea 
429
430
431 @subsection Mandrake
432
433 Some binaries are available at rpmfind.net. Refer to 
434 @uref{http://rpmfind.net/linux/mandrake/cooker/contrib/RPMS/}.
435
436 You can also compile a RPM for Mandrake yourself.  A spec file is in
437 @file{make/out/lilypond.mandrake.spec}, see the instructions for building
438 the Red Hat RPM.
439
440 @subsection Debian GNU/Linux
441
442 A Debian package is also available.  You may install it easily by running
443 @command{apt-get} as root:
444 @example
445
446         apt-get install lilypond lilypond-doc
447 @end example
448
449 You can also compile the .deb for Debian yourself, do:
450 @example
451
452         apt-get -b source lilypond
453 @end example
454
455 If you're real impatient, you may even do:
456 @example
457
458         cd lilypond-x.y.z   # a previous version
459         uscan               # download and build latest directly from upstream
460 @end example
461
462
463 Debian's @TeX{} installation is a bit short on memory, you may want to
464 increase it like this:
465 @example
466 --- texmf.cnf.orig      Sun Dec 16 23:47:07 2001
467 +++ texmf.cnf   Sun Dec 16 23:46:34 2001
468 @@ -411,8 +411,8 @@
469  main_memory.context = 1500000
470  main_memory.mpost = 1000000
471  main_memory = 263000 % words of inimemory available; also applies to inimf&mp
472 -extra_mem_top = 0    % extra high memory for chars, tokens, etc.
473 -extra_mem_bot = 0    % extra low memory for boxes, glue, breakpoints, etc.
474 +extra_mem_top = 1000000    % extra high memory for chars, tokens, etc.
475 +extra_mem_bot = 1000000    % extra low memory for boxes, glue, breakpoints, etc.
476  
477  obj_tab_size.context = 300000
478  
479 @@ -430,7 +430,7 @@
480  % Max number of characters in all strings, including all error messages,
481  % help texts, font names, control sequences.  These values apply to TeX and MP.
482  pool_size.context = 750000
483 -pool_size = 125000             
484 +pool_size = 250000             
485  % Minimum pool space after TeX/MP's own strings; must be at least
486  % 25000 less than pool_size, but doesn't need to be nearly that large.
487  string_vacancies.context = 45000
488 @end example
489
490 You could also export @env{extra_mem_top} and @env{extra_mem_bot} as
491 environment variables if you do not want to or cannot modify
492 @file{/etc/texmf/texmf.cnf}.
493
494 Alternatively, visit
495
496 @itemize @bullet
497 @item @uref{http://packages.debian.org/lilypond,http://packages.debian.org/lilypond}
498 @item @uref{http://people.debian.org/~foka/lilypond/,http://people.debian.org/~foka/lilypond/}
499 for latest semi-unofficial build of LilyPond 1.4.2 for Debian 2.2 (potato) users.
500 The official stable Debian 2.2 is stuck with the old LilyPond-1.3.24.
501 Since LilyPond-1.4 has been released, the older lilypond1.3 Debian
502 package is now obsolete.
503 @end itemize
504
505 Please contact Anthony Fok @email{lilypond@@packages.debian.org} for more
506 information.
507
508 The build scripts are in the subdirectory @file{debian/}; you can
509 make the .deb by doing, for example:
510
511 @example
512         $ su - root
513         # dpkg --purge lilypond lilypond1.3
514         # exit
515         $ tar xzf lilypond-1.4.3.tar.gz
516         $ cd lilypond-1.4.3
517         $ dch -p -v 1.4.3-0.local.1 "Local build."
518         $ debuild -B
519         $ su - root
520         # dpkg -i ../lilypond_1.4.3*.deb
521         # exit
522         $
523 @end example
524
525 Use command @command{debuild} instead of @command{debuild -B} if you have
526 a very fast machine and want to build the HTML, PS and DVI documentation
527 too.
528
529 Warning!  Debian/Testing and Debian/Unstable now default to using gcc-3.3
530 and g++-3.3.  Lilypond currently cannot be compiled using gxx-3.3; you must
531 force "make deb" to use gxx-3.2 (or 2.95) instead.
532
533 For compilation on a Debian GNU/Linux system you need these packages,
534 in addition to the those needed for running:
535
536 @itemize @bullet
537 @item g++, cpp, libc6-dev, libstdc++<@var{your-libstdc++-version-here}>-dev
538 @item libguile<@var{your-libguile-version-here}>-dev
539 @item make, m4, flex, bison
540 @item gettext
541 @item groff, texinfo
542 @item tetex-base, tetex-bin, tetex-extra, libkpathsea-dev or tetex-dev
543 @item dpkg-dev, debhelper, fakeroot
544 @item gs, netpbm
545 @item pnmtopng (only in Debian 2.2; pnmtopng has been merged with netpbm
546   in Debian testing/unstable.)
547 @end itemize
548
549 Most of these are listed on the @samp{Build-Depends} line in the
550 @file{debian/control} file.  To ensure the creation of the lilypond deb is
551 trouble-free, we recommend that you first install the following packages
552 by running \@command{apt-get} as root before building the package:
553
554 For Debian 2.2:
555
556 @example
557         apt-get install task-debian-devel task-c++-dev \
558                 python-base libguile6-dev tetex-bin tetex-dev \
559                 tetex-extra flex bison texinfo groff gs \
560                 netpbm pnmtopng m4 gettext
561 @end example
562
563 For Debian in development ("unstable", the future 2.3 or 3.0):
564
565 @example
566         apt-get install binutils cpp gcc libc6-dev \
567                 g++ libstdc++2.10-dev \
568                 python-base libguile-dev tetex-bin libkpathsea-dev \
569                 tetex-extra flex bison texinfo  groff gs \
570                 netpbm m4 gettext
571 @end example
572
573 And, just so that old fonts from previous versions of LilyPond won't
574 interfere with your build, you may want to do this before the build too:
575
576 @example
577         dpkg --purge lilypond lilypond1.3
578 @end example
579
580 @subsection MacOS X
581
582 LilyPond is available through fink, in the unstable cvs distribution.
583
584 You need to:
585 @itemize @bullet
586 @item Get the Fink package manager from @uref{http://fink.sourceforge.net}
587 @item Get the Lilypond package description by enabling the "unstable" tree
588 in fink and executing @command{fink selfupdate-cvs}.
589 @end itemize
590
591 Then do:
592 @quotation
593 @example
594         fink install lilypond-unstable
595 @end example
596 @end quotation
597
598 That's it!  The command should compile and install all LilyPond
599 prerequisites (python, TeX, X11, ghostscript) and then LilyPond
600 itself.
601
602
603 @subsection compiling on MacOS X
604 LilyPond has been built on Darwin, to be precise, on:
605 @example
606     Darwin buoux.aspiratie.nl 5.3 Darwin Kernel Version 5.3: Thu Jan 24
607     22:06:02 PST 2002; root:xnu/xnu-201.19.obj~1/RELEASE_PPC  Power Macintosh powerpc
608 @end example
609
610 using:   
611
612 @example
613     Apple Computer, Inc. version gcc-932.1, based on gcc version 2.95.2 19991024 (release)
614 @end example
615
616 To make sure you have all packages needed to build LilyPond installed,
617 run as root:
618
619 @example
620         apt-get install bash python guile debianutils flex bison texinfo \
621                 ghostscript6 netpbm m4 gettext
622 @end example        
623
624 and:
625                 
626 @example
627         fink install tetex
628 @end example        
629
630 For more information about @file{apt-get} and @file{fink}, see
631 @uref{http://fink.sf.net,fink.sourceforge.net}.
632
633 @c  brokenness of autoconf; don't ask
634 Then, configure, patch, make and install LilyPond using these commands:
635
636 @example
637         CC="cc -I/sw/include" CXX="c++ -I/sw/include" LDFLAGS="-L/sw/lib" \
638             ./configure --prefix=/sw
639         make -C lily out/parser.hh out/parser.cc out/config.h
640         patch -p0 < darwin.patch
641         make -C lily out/parser.o
642         make DEPENDENCIES_OUTPUT=/dev/null all
643         make install
644 @end example
645
646 For installing, you must be root, of course.
647
648 @c Why isn't this in BUGS (where it belongs?)
649 @section Problems
650
651 For help and questions use @email{lilypond-user@@gnu.org}.  Please
652 consult the FAQ before mailing your problems.  If you find bugs, please
653 send bug reports to @email{bug-lilypond@@gnu.org}.
654
655 Bugs that are not fault of LilyPond are documented here.
656
657 @subsection Linking to kpathsea
658
659 If kpathsea and the corresponding header files are installed in some
660 directory where GCC does not search by default, for example in
661 @file{/usr/local/lib/} and @file{/usr/local/include/} respectively,
662 you have to explicitly tell configure where to find it. To do this,
663
664 @itemize
665 @item @code{rm config.cache}
666 @item @code{export LDFLAGS=-L/usr/share/texmf/lib}
667 @item @code{export CPPFLAGS=-I/usr/share/texmf/include}
668 @item @code{./configure}
669 @end itemize
670 Once configure has found them, the paths are stored in
671 @file{config.make} and will be used even if you don't have the
672 environment variables set during make.
673
674
675 @unnumberedsubsec Gcc-3.0.4
676
677 Gcc 3.0.4, is a bit flaky.  Try downgrading to 2.95.x, or if you're
678 adventurous (see below), upgrading to 3.1.x.
679
680 @unnumberedsubsec Flex-2.5.4a and gcc-3.x
681
682 Flex 2.5.4a does not produce g++-3.0 compliant C++ code.  To compile
683 LilyPond with gcc-3.0 you may do:
684
685 @example
686         CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0
687         make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc
688         patch -p1 < lexer-gcc-3.0.patch
689         make conf=gcc-3.0 -C lily
690 @end example
691
692 Note that this is fixed in Debian/unstable for flex >= 2.5.4a-13.
693
694 @unnumberedsubsec Flex-2.5.4a and gcc-3.1.x
695
696 Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code.  To compile
697 LilyPond with gcc-3.1.1 you may do:
698
699 @example
700         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
701         CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
702             ./configure --enable-config=gcc-3.1
703         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
704         make conf=gcc-3.1
705 @end example
706
707 This assumes that the GCC 3.1 binaries are called gcc-3.1 and g++-3.1.
708 Note that this is @strong{not} fixed in Debian/unstable for flex <=
709 2.5.4a-26.
710
711 @unnumberedsubsec Linux-2.4.0, Guile-1.4 --with-threads
712
713 There's a bug in certain kernels around version 2.4.0, that is
714 triggered when using Guile 1.4 compiled with pthreads.  You'll see
715 random segmentation fault crashes of LilyPond.  Upgrade to a newer
716 version of Linux.  If you can't do that, you may try to recompiling
717 Guile without threads (YMMV):
718
719 @example
720          guile-1.4$ ./configure --without-threads; make all install
721 @end example
722
723 @unnumberedsubsec OpenBSD
724
725 @itemize @bullet
726 @item By default, gcc on OpenBSD doesn't include
727 @file{/usr/local/include} and @file{/usr/local/lib} in the system
728 paths.  Depending upon where/how you installed kpathsea and other
729 libraries, you may need to refer to the section ``Linking to
730 kpathsea''.
731
732 @end itemize
733
734 @unnumberedsubsec NetBSD
735
736 @itemize @bullet
737 @item The flex precompiled in NetBSD-1.4.2 is broken.
738 Download flex-2.5.4a, build, install.
739
740 @item The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
741 release)) does not include @file{/usr/pkg} paths.  Configure using:
742 @example
743
744 CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
745
746 @end example
747
748 @end itemize
749
750 @unnumberedsubsec  Solaris
751
752 @itemize @bullet
753 @item Solaris7, ./configure
754
755 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
756 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
757 is.  Please run configure like:
758 @example
759         CONFIG_SHELL=/bin/ksh ksh -c ./configure
760 @end example
761 or
762 @example
763         CONFIG_SHELL=/bin/bash bash -c ./configure
764 @end example
765
766 @item Sparc64/Solaris 2.6, GNU make-3.77
767
768 GNU make-3.77 is buggy on this platform, upgrade to 3.78.1 or newer.
769
770 @item Sparc64/Solaris 2.6, ld
771
772 Not yet resolved.
773 @end itemize
774
775
776 @unnumberedsubsec   AIX
777
778 @itemize @bullet
779 @item AIX 4.3 ld
780
781 The following is from the gcc install/SPECIFIC file.
782 @quotation
783    Some versions of the AIX binder (linker) can fail with a relocation
784    overflow severe error when the -bbigtoc option is used to link
785    GCC-produced object files into an executable that overflows the TOC.
786    A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND  
787    -BBIGTOC) is available from IBM Customer Support and from its
788    27service.boulder.ibm.com website as PTF U455193.   
789
790    Binutils does not support AIX 4.3 (at least through release 2.9). GNU
791    as and GNU ld will not work properly and one should not configure GCC
792    to use those GNU utilities. Use the native AIX tools which do
793    interoperate with GCC.
794 @end quotation
795
796 add -Wl,-bbigtoc to USER_LDFLAGS, ie:
797 @example
798     LDFLAGS='-Wl,-bbigtoc' ./configure
799 @end example
800
801 @end itemize
802
803
804 @bye
805