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