]> git.lyx.org Git - lyx.git/blob - INSTALL
93803ca144927c3a8a3b1ab9058162168634ab25
[lyx.git] / INSTALL
1 Compiling and installing LyX
2 ============================
3
4 Quick compilation guide
5 -----------------------
6
7 These four steps will compile, test and install LyX:
8
9         1) ./configure
10            configures LyX to your system.
11
12         2) make
13            compiles the program.
14
15         3) src/lyx
16            runs the program so you can check it out.
17
18         4) make install
19            will install it.
20
21
22 Requirements
23 ------------
24
25 You will need to have both an Xforms library and Xpm library to compile 
26 LyX.  It is imperative that you have the correct versions of these 
27 libraries, and their associated header files.
28
29 As of LyX version 1.0.0, you will need to have Xforms library and header
30 version 0.81, 0.86, or 0.88.  Version 0.88 is a stable release and the
31 recommended version.  On some systems, such as linux ELF, there are shared 
32 library versions of the Xforms library, which require an installation step 
33 to configure the system.
34
35 Xforms is available (free) only in binary format, source code is not
36 available.  If it is not available for your machine, contact the Xforms
37 developers to request a version for your system.  You can get it from
38
39     http://bragg.phys.uwm.edu/xforms
40     ftp://bragg.phys.uwm.edu/pub/xforms/
41     ftp://ftp.lyx.org/pub/xforms/
42     ftp://ftp.fu-berlin.de/unix/X11/gui/xforms
43     ftp://ftp.cs.ruu.nl/pub/XFORMS/
44
45 In addition, you must have libXpm version 4.7 (or newer; 4.8 rumoured
46 to work).
47
48 libXpm can be found at:
49             http://www.funet.fi/pub/Linux/sunsite/X11/libs/!INDEX.html
50             (or similar locations at other sunsites like sunsite.unc.edu)
51
52 If you compile LyX with gcc, you should not need to have libg++ installed 
53 on most systems.  However, see the note in the section `Problems'.
54
55 If you make modifications to files in src/ (for example by applying a 
56 patch), you will need to have the GNU gettext package installed, due to 
57 some dependencies in the makefiles. You can find the latest (alpha) 
58 version from:
59
60     ftp://alpha.gnu.org/gnu/gettext-0.10.xx.tar.gz.
61
62 LyX contains a hack to work around this, but you should not rely too
63 much on it.
64
65
66 Finally, the two following programs should be available at
67 configuration time:
68
69   o Perl (at least 5.002) is needed for the reLyX script. reLyX will
70     not be installed if perl is not found.  If the environment
71     variable PERL is set to point to some program, this value will be
72     used, even if the program does no exist (this can be useful if
73     the machine on which LyX is built is not the one where it will
74     run). 
75
76   o LaTeX2e should be correctly setup for the user you are logged
77     as. Otherwise, LyX will not be able to run a number of tests. Note
78     that users can run these tests manually with Option->Configure.
79
80
81 Creating the Makefile
82 ---------------------
83
84 LyX can be configured using GNU autoconf utility which attempts to guess 
85 the configuration needed to suit your system.  The standard way to use it 
86 is described in the file INSTALL.autoconf.  In most cases you will be able 
87 to create the Makefile by typing
88
89   ./configure
90
91 For more complicated cases, LyX configure takes the following specific
92 flags:
93
94   o --with-extra-lib=DIRECTORY that specifies the path where LyX will find
95     extra libraries (Xpm, xforms) it needs.  Defaults to NONE (i.e. search 
96     in standard places).  You can specify several directories, separated
97     by colons.
98
99   o --with-extra-inc=DIRECTORY that gives the place where LyX will find
100     xforms headers.  Defaults to NONE (i.e.  search in standard places).
101     You can specify several directories, separated by colons.
102
103   o --with-extra-prefix[=DIRECTORY] that is equivalent to
104        --with-extra-lib=DIRECTORY/lib --with-extra-inc=DIRECTORY/include
105    If DIRECTORY is not specified, the current prefix is used.
106
107   o --with-two-colors=[yes|no] that forces LyX to use two colors pixmaps
108     (bitmaps) instead of the full-colored standard ones.  Defaults to no.
109
110
111 There are also flags to control the internationalization support in
112 LyX:
113
114   o --disable-nls suppresses all internationalization support,
115     yielding a somewhat smaller code. 
116
117   o --with-included-gettext forces the use of the included GNU gettext
118     library, although you might have another one installed.
119
120   o --with-catgets allows to use the catget() functions which can
121     exist on your system.  This can cause problems, though. Use with
122     care.
123
124   o You can also set the environment variable LINGUAS to a list of
125     language in case ou do not want to install all the translation 
126     files. For example, if you are only interested in German and
127     Finnish, you can type (with sh or bash)
128         export LINGUAS='de fi'
129     before running configure.
130
131 Moreover, the following generic configure flags may be useful:
132
133   o --prefix=DIRECTORY specifies the root directory to use for
134     installation. [defaults to where lyx has already been installed or
135     /usr/local]
136
137   o --program-suffix=STRING sets the name of the installed LyX binary and 
138       of the LyX library directory to lyxSTRING. This may be used to
139       compile lyx as lyx-1.0.0 and avoid clashes with earlier/later versions.
140
141   o --datadir=DIRECTORY gives the directory where all extra LyX 
142     files (lyxrc example, documentation, templates and layouts
143     definitions) will be installed. 
144     [defaults to ${prefix}/share/lyx${program_suffix}]
145
146   o --bindir=DIRECTORY gives the directory where the lyx binary
147     will be installed. [defaults to ${prefix}/bin]
148
149   o --mandir=DIRECTORY gives the directory where the man pages will go.
150     [defaults to ${prefix}/man]
151
152 Note that the --with-extra-* commands are not really robust when it
153 comes to use of relative paths.  If you really want to use a relative path
154 here, you can prepend it with "`pwd`/". 
155
156 If you do not like the default compile flags used (-g -O2 on gcc), you can 
157 set CXXFLAGS variable to other values as follows:
158
159   o CXXFLAGS='-O2' (sh, bash)
160   o setenv CXXFLAGS '-O2' (csh, tcsh)
161
162 Similarly, if you want to force the use of some specific compiler, you can 
163 give a value to the CXX variable.
164
165 If you encounter problems, please read the section 'Problems' at the end of 
166 this file. 
167
168 In particular, the following options could be useful in some
169 desperate cases:
170
171   o --with-debug that specifies whether you want to have debug information
172     by default on standard error.  Default is no. 
173
174   o --with-warnings that make the compiler output more warnings during
175     the compilation of LyX.  Opposite is --without-warnings.  By default,
176     this flag is on for development versions only.
177
178   o --with-broken-headers that provides prototypes to replace functions
179     not correctly defined in SunOS4 and SCO header files.  Its only effect is
180     to suppress a few warnings.  It is autodetected by default.
181
182   o --without-latex-config that disables the automatic detection of your
183     latex.  This detection is automatically disabled if latex cannot be found. 
184     If you find that you have to use this flag, please report it as a bug.
185
186   o --with-broken-const attempts to fix a bug in gcc 2.7.[012] (see the
187     section 'Problems').
188
189   o ---with-gcc-hack which provide a wrapper around gcc that tries to
190     compile without optimization after a compilation failed (see the
191     section 'Problems').
192
193   o --without-liberty suppresses the detection of the -liberty library
194     (see the section 'Problems').
195
196
197 Compiling and installing LyX
198 ----------------------------
199
200 Once you've got the Makefile created, you just have to type:
201
202   make all
203   make install
204
205 All should be OK ;)
206
207 BTW: in the images subdirectory there is also a small icon "lyx.xpm",
208 that can be used to display lyx-documents in filemanagers.
209
210 If configure fails for some strange reason
211 ------------------------------------------
212
213 Even when configure fails, it creates a Makefile.  You always can check
214 the contents of this file, modify it and run 'make'.
215
216 Compiling For Multiple Architectures
217 ------------------------------------
218
219 You can compile LyX for more than one kind of computer at the same
220 time, by placing the object files for each architecture in their own
221 directory.  To do this, you must use a version of `make' that supports
222 the `VPATH' variable, such as GNU `make'.  `cd' to the directory where
223 you want the object files and executables to go and run the
224 `configure' script.  `configure' automatically checks for the source
225 code in the directory that `configure' is in and in `..'.
226
227 If you have to use a `make' that does not supports the `VPATH'
228 variable, you have to compile LyX for one architecture at a time in
229 the source code directory.  After you have installed LyX for one
230 architecture, use `make distclean' before reconfiguring for another
231 architecture.
232
233 Stripping LyX
234 -------------
235
236 A LyX binary for linux is about 1M when compiled without debug-information 
237 and with dynamic libraries.  If yours is much bigger you probably compiled 
238 it with debug-informations (-g).  If you don't want to debug LyX just enter
239
240           strip src/lyx
241
242 before installing.  Note that this is done automatically for public
243 versions.
244
245
246 Problems
247 --------
248
249 This section provides several hints that have been submitted by LyX
250 team member or users to help compiling on some particular
251 architectures. If you find that some of this hints are wrong, please
252 notify us.
253
254   o If you have problems indicating that configure cannot find a part of
255     the xforms or Xpm library, use the --with-extra-lib and --with-extra-inc 
256     options of configure to specify where these libraries reside.  
257
258   o Configure will seemingly fail to find xpm.h and forms.h on linux if
259     you did a 'make mrproper' in the kernel directory, because this
260     removes some symbolic links that are needed for compilation. A 'make
261     symlinks' in linux kernel sources fixes that.
262
263   o If you have GNU gettext installed on your system (e.g. on linux),
264     you will get tons of warnings like:
265
266     bullet_forms.C:101: warning: passing `char *' to argument 1 of
267     `__builtin_constant_p(int)' lacks a cast
268
269     These are in harmless warnings caused by a bug in libintl.h, but
270     will be solved if you use --with-included-gettext when configuring
271     LyX.
272
273   o On Digital Unix with cxx, you may have a compilation error in
274     lyx_main.C if you have GNU gettext installed. This is due to a bug
275     in gettext. To solve this, you can either (1) configure with
276     --with-included-gettext or (2) add -D__STDC__ to cxx flags.
277
278   o The configure script seems to hang while it is checking the LaTeX setup.
279     We think that this is not a real problem, but rather a symptom of the 
280     fact that the ec-fonts are being rendered.  This process can take quite 
281     some time, so the remedy is simply to have patience. (The fonts need to 
282     be rendered at some point to be usable anyways.)
283
284   o According to John Collins <collins@phys.psu.edu>, on SunOS 4.1.3 you may 
285     find two sets of X libraries, and they are of course incompatible :-)
286     One is the set provided as part of OpenWindows, and one is the standard
287     X distribution (e.g., X11R5).  If you encounter problems (or if, for
288     some obscure reasons configure cannot find your X libraries) you can
289     use the following options:
290
291      o --x-libraries=DIRECTORY that indicates where the X libraries reside.
292
293      o --x-includes=DIRECTORY that indicate where the X include files reside.
294
295     The standard X11R5 libraries should work when the OpenWindows ones
296     don't.
297
298   o Some systems lack functions that LyX needs.  To fix this, configure
299     tries to link against the -liberty library, if it is available. 
300     If you experience problems with missing symbols at link time, you 
301     could try to install libiberty.a, which comes with several GNU 
302     packages (in particular libg++).  In any case, please report your 
303     problems to lyx-devel@lists.lyx.org. 
304
305     The option --without-liberty disable the detection of -liberty.  It
306     is meant for debugging purpose only.
307
308   o There are several known bugs in gcc 2.7.xx that cause compiler
309     errors.  This is in particular the case in spellchecker.C under
310     HP-UX 9.05 (ask Bernhard Iselborn <biselbor@rhrk.uni-kl.de> for
311     more comments) and in lyxrc.C under Linux/Alpha or DEC OSF/1.  In
312     both cases, the solution is to recompile the offending file
313     without optimization and resume the compilation process with
314     'make'.  To make things simpler, you can use the option
315     --with-gcc-hack of configure that will do that for you
316     automatically.  
317
318   o According to David Sundqvist <David_Sundqvist@vd.volvo.se>, some
319     changes are needed to compile with aCC on HP-UX 10.20. These are the
320     relevant changes in the makefile (with comments tagged on):  
321
322     CXX = /opt/aCC/bin/aCC 
323     CXXFLAGS = -O +inst_none # The aCC compiler tries to run instantiations
324                              # which currently break.
325
326     LIBS = -lforms -lXpm  -lSM -lICE -lc -lm -lX11 -lCsup # must link with Csup
327     LDFLAGS = -L/opt/aCC/lib # perhaps not needed. 
328
329   o There is a bug in gcc 2.7.[012] in the handling of const which can
330     cause various unpredictable problems.  If you experience weird
331     crashes with a LyX compiled by gcc 2.7.[012], try to configure
332     with the --with-broken-const flag and recompile.  If this improves
333     things, please report it to the mailing list.  Note that this 
334     compiler bug is fixed in gcc 2.7.2.1 and in several Linux 
335     distributions of gcc 2.7.[012].
336
337     This bug is currently not autodetected, but any code to do so
338     would be welcome.  A patch for gcc 2.7.2 is as follows:
339
340 *** clean-ss-951203/expr.c      Sun Nov 26 08:18:07 1995
341 --- ss-951203/expr.c    Mon Dec  4 11:41:18 1995
342 *************** expand_expr (exp, target, tmode, modifie
343 *** 4582,4587 ****
344            through a pointer to const does not mean that the value there can
345            never change.  Languages where it can never change should
346            also set TREE_STATIC.  */
347 !       RTX_UNCHANGING_P (temp) = TREE_READONLY (exp) | TREE_STATIC (exp);
348         return temp;
349         }
350 --- 4582,4588 ----
351            through a pointer to const does not mean that the value there can
352            never change.  Languages where it can never change should
353            also set TREE_STATIC.  */
354 !       RTX_UNCHANGING_P (temp) = TREE_READONLY (exp) & TREE_STATIC (exp);
355         return temp;
356         }
357
358
359   o On Digital Unix with gcc, you can get warnings like
360
361 warning, LyXFamilyNames not found in original or external symbol tables, value defaults to 0
362 warning, LyXSeriesNames not found in original or external symbol tables, value de
363
364     These concern symbols beginning with an uppercase letter and seems
365     to be harmless. Similarly, the compilation can end with the
366     following warning:
367
368 /bin/ld:
369 Warning: Linking some objects which contain exception information sections
370         and some which do not. This may cause fatal runtime exception handling
371         problems (last obj encountered without exceptions was ../intl/libintl.a).
372
373
374     You can safely ignore it. 
375
376   o Configure fails to work with cxx V5.0-3 on Digital Unix
377     V3.2c.  This is due to a bug in this particular version of cxx. 
378     Contact Achim Bohnet <ach@rosat.mpe-garching.mpg.de> for more
379     details concerning this problem.
380