]> git.lyx.org Git - lyx.git/blob - INSTALL
document --with-frontend in INSTALL; fix writing of user email in pref; move some...
[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. By default, LyX configures
11            the xforms frontend, use --with-frontend=qt to build a Qt
12            version.
13
14         2) make
15            compiles the program.
16
17         3) src/lyx
18            runs the program so you can check it out.
19
20         4) make install
21            will install it. You can use "make install-strip" instead
22            if you want a smaller binary.
23
24
25 Note for CVS checkouts
26 ----------------------
27
28 If you have checked this out from CVS, you need to have
29 automake, autoconf, and gettext installed.  Then,
30 type "./autogen.sh" to build the needed configuration
31 files and proceed as stated below.
32
33 You will also probably need GNU m4 (perhaps installed as gm4).
34
35 Requirements
36 ------------
37
38 First of all, you will also need a recent C++ compiler, where recent
39 means that the compilers are close to C++ standard conforming.
40 Compilers that are known to compile LyX are egcs 1.1.x, gcc 2.95.x and
41 later, and Digital C++ version 6.1 and later. Please tell us your
42 experience with other compilers. It is _not_ possible to compile LyX
43 with gcc 2.7.x and 2.8.x, and this is not likely to change in the
44 future.
45
46 Note that, contrary to LyX 1.0.x, LyX 1.3.x makes great use of C++
47 Standard Template Library (STL); this means that gcc users will have
48 to install the relevant libstdc++ library to be able to compile this
49 version.
50
51 * xforms frontend
52
53 Both an Xforms and Xpm libraries should be installed to compile LyX.
54 It is imperative that you have the correct versions of these
55 libraries, and their associated header files.
56
57 The xforms library has been very recently updated to version 1.0.
58 This version has been released under the LGPL (Lesser General Public
59 License), and the availability of the source means that many bugs that
60 have been plaguing LyX have been fixed in xforms. You are advised to
61 upgrade to xforms 1.0 to enjoy all these new fixes.
62 In fact, LyX 1.3.0 no longer supports versions of xforms older than 0.89.5.
63
64 You can get the source from
65         http://world.std.com/~xforms/
66         ftp://ncmir.ucsd.edu/pub/xforms/OpenSource/xforms-1.0-release.tgz
67         ftp://ftp.lyx.org/pub/xforms/OpenSource/xforms-1.0-release.tgz
68
69 If you use a rpm-based linux distribution, such as RedHat or Mandrake,
70 we recommend that you grab a version of xforms from
71         ftp://ftp.lyx.org/pub/lyx/contrib
72 Look for the xforms-1.0-release.src.rpm or the binary libforms*.i386.rpm.
73
74 In addition, you must have libXpm version 4.7 or newer.
75
76 * Qt frontend
77
78 LyX has been tested with both Qt 2.x and 3.x libraries. The only special
79 point to make is that you must ensure that both LyX and the Qt libraries
80 are compiled with the same C++ compiler.
81
82 Note that if Qt is using Xft2/fontconfig, you may need to install the
83 latex-ttf-fonts package, tobe found on ftp://ftp.lyx.org/ to get maths
84 symbols displayed properly. To find out, type:
85         ldd `which lyx` | grep fontconfig
86 at the console. Both RH8 and Debian unstable distributions are known
87 to use fontconfig.
88
89 If, however, your version of Qt does not use fontconfig, then the
90 /usr/local/share/lyx/xfonts directory (or equivalent) should be added to
91 the font path. This is done automatically by LyX if LyX is run on
92 the local machine, and the X server supports Postscript fonts. If, however,
93 you're running LyX remotely, then you'll have to do this step yourself.
94 'man xset' is your friend.
95
96 * Other things to note
97
98 If you make modifications to files in src/ (for example by applying a
99 patch), you will need to have the GNU gettext package installed, due
100 to some dependencies in the makefiles. You can get the latest version
101 from:
102         ftp://ftp.gnu.org/gnu/gettext/gettext-0.11.4.tar.gz
103
104 LyX contains a hack to work around this, but you should not rely too
105 much on it.
106
107 To use the thesaurus, you will need to install libAikSaurus, available
108 from:
109     http://aiken.clan11.com/aiksaurus/
110
111 The two following programs should be available at configuration time:
112
113   o Perl (at least 5.002) is needed for the reLyX script. reLyX will
114     not be installed if perl is not found.  If the environment
115     variable PERL is set to point to some program, this value will be
116     used, even if the program does no exist (this can be useful if
117     the machine on which LyX is built is not the one where it will
118     run).
119
120   o LaTeX2e should be correctly setup for the user you are logged in
121     as. Otherwise, LyX will not be able to run a number of tests. Note
122     that users can run these tests manually with Edit>Reconfigure.
123
124 Finally, you will need to have python 1.5.2 or newer installed to be
125 able to import older LyX files with the lyx2lyx script (this script is
126 called automatically when opening a file).
127
128
129 Creating the Makefile
130 ---------------------
131
132 LyX can be configured using GNU autoconf utility which attempts to guess
133 the configuration needed to suit your system.  The standard way to use it
134 is described in the file INSTALL.autoconf.  In most cases you will be able
135 to create the Makefile by typing
136
137   ./configure
138
139 For more complicated cases, LyX configure takes the following specific
140 flags:
141
142   o --with-frontend=FRONTEND that allows to specify which frontend you
143     want to use. Default is "xforms", and the other possible value is
144     "qt".
145
146   o --with-extra-lib=DIRECTORY that specifies the path where LyX will
147     find extra libraries (Xpm, xforms, qt) it needs. Defaults to NONE
148     (i.e. search in standard places). You can specify several
149     directories, separated by colons.
150
151   o --with-extra-inc=DIRECTORY that gives the place where LyX will find
152     xforms headers.  Defaults to NONE (i.e.  search in standard places).
153     You can specify several directories, separated by colons.
154
155   o --with-extra-prefix[=DIRECTORY] that is equivalent to
156        --with-extra-lib=DIRECTORY/lib --with-extra-inc=DIRECTORY/include
157     If DIRECTORY is not specified, the current prefix is used.
158
159   o --with-version-suffix will install LyX as lyx-<version>, e.g. lyx-1.3.1
160     The LyX data directory will be something like <whatever>/lyx-1.3.1/.
161     Additionally your user configuration files will be found in e.g.
162     $HOME/.lyx-1.3.1
163
164     You can use this feature to install more than one version of LyX
165     on the same system. You can optionally specify a "version" of your
166     own, by doing something like : 
167        ./configure --with-version-suffix=-latestcvs
168
169     Note that the standard configure options --program-prefix,
170     --program-suffix and the others will not affect the shared LyX
171     directory etc. so it is recommended that you use --with-version-suffix
172     (or --prefix) instead.
173
174   o --enable-optimization=VALUE enables you to set optimization to a
175     higher level as the default (-O), for example --enable-optimization=-O3.
176
177   o --disable-optimization - you can use this to disable compiler
178     optimization of LyX. The compile may be much quicker with some
179     compilers, but LyX will run more slowly.
180
181   o --enable-debug will add debug information to your binary. This
182     requires a lot more disk space, but is a must if you want to try to
183     debug problems in LyX. The default is to have debug information
184     for development versions and prereleases only.
185
186 There are also flags to control the internationalization support in
187 LyX:
188
189   o --disable-nls suppresses all internationalization support,
190     yielding a somewhat smaller code.
191
192   o --with-included-gettext forces the use of the included GNU gettext
193     library, although you might have another one installed.
194
195   o --with-catgets allows to use the catget() functions which can
196     exist on your system.  This can cause problems, though. Use with
197     care.
198
199   o You can also set the environment variable LINGUAS to a list of
200     language in case ou do not want to install all the translation
201     files. For example, if you are only interested in German and
202     Finnish, you can type (with sh or bash)
203         export LINGUAS='de fi'
204     before running configure.
205
206 Moreover, the following generic configure flags may be useful:
207
208   o --prefix=DIRECTORY specifies the root directory to use for
209     installation. [defaults to /usr/local]
210
211   o --datadir=DIRECTORY gives the directory where all extra LyX
212     files (lyxrc example, documentation, templates and layouts
213     definitions) will be installed.
214     [defaults to ${prefix}/share/lyx${program_suffix}]
215
216   o --bindir=DIRECTORY gives the directory where the lyx binary
217     will be installed. [defaults to ${prefix}/bin]
218
219   o --mandir=DIRECTORY gives the directory where the man pages will go.
220     [defaults to ${prefix}/man]
221
222 Note that the --with-extra-* commands are not really robust when it
223 comes to use of relative paths.  If you really want to use a relative path
224 here, you can prepend it with "`pwd`/".
225
226 If you do not like the default compile flags used (-g -O2 on gcc), you can
227 set CXXFLAGS variable to other values as follows:
228
229   o CXXFLAGS='-O2' (sh, bash)
230   o setenv CXXFLAGS '-O2' (csh, tcsh)
231
232 Similarly, if you want to force the use of some specific compiler, you can
233 give a value to the CXX variable.
234
235 If you encounter problems, please read the section 'Problems' at the end of
236 this file.
237
238 In particular, the following options could be useful in some desperate
239 cases:
240
241   o --enable-warnings that make the compiler output more warnings during
242     the compilation of LyX.  Opposite is --disable-warnings.  By default,
243     this flag is on for development versions only.
244
245   o --enable-assertions that make the compiler generate run-time
246     code which checks that some variables have sane values. Opposite
247     is --disable-assertions.  By default, this flag is on for
248     development versions only.
249
250   o --without-latex-config that disables the automatic detection of your
251     latex configuration.  This detection is automatically disabled if
252     latex cannot be found.  If you find that you have to use this
253     flag, please report it as a bug.
254
255
256 Compiling and installing LyX
257 ----------------------------
258
259 Once you've got the Makefile created, you just have to type:
260
261   make all
262   make install
263
264 All should be OK ;)
265
266 Since the binaries with debug information tend to be huge (although
267 this does not affect the run-time memory footprint), you might want
268 to strip the lyx binary. In this case replace "make install" with
269
270   make install-strip
271
272 BTW: in the images subdirectory there is also a small icon "lyx.xpm",
273 that can be used to display lyx-documents in filemanagers.
274
275 If configure fails for some strange reason
276 ------------------------------------------
277
278 Even when configure fails, it creates a Makefile.  You always can check
279 the contents of this file, modify it and run 'make'.
280
281 Compiling For Multiple Architectures
282 ------------------------------------
283
284 You can compile LyX for more than one kind of computer at the same
285 time, by placing the object files for each architecture in their own
286 directory.  To do this, you must use a version of `make' that supports
287 the `VPATH' variable, such as GNU `make'.  `cd' to the directory where
288 you want the object files and executables to go and run the
289 `configure' script.  `configure' automatically checks for the source
290 code in the directory that `configure' is in and in `..'.
291
292 If you have to use a `make' that does not supports the `VPATH'
293 variable, you have to compile LyX for one architecture at a time in
294 the source code directory.  After you have installed LyX for one
295 architecture, use `make distclean' before reconfiguring for another
296 architecture.
297
298 Preparing a binary distribution for the use of others
299 ------------------------------------------------------
300
301   o Compile LyX with the right compiler switches for your
302     architecture. Make sure you use the --without-latex-config switch
303     of configure, since others might not be interested by your
304     configuration :-)
305
306   o Create a file README.bin describing your distribution and
307     referring to *you* if problems arise. As a model, you can use the
308     file development/tools/README.bin.example, which can be a good
309     starting point.
310
311   o Type `make bindist'. This will create a file
312     lyx-1.xx.yy-bin.tar.gz. Rename it to reflect you architecture
313     and the peculiarities of your build (e.g. static vs. dynamic).
314
315   o Check that everything is correct by unpacking the distribution
316     in some private place and running it. In particular, check the
317     output of `ldd lyx' to know which libraries are really needed.
318
319   o Upload your binary file to ftp.devel.lyx.org:/pub/incoming, and
320     notify larsbj@lyx.org.
321
322
323 Problems
324 --------
325
326 This section provides several hints that have been submitted by LyX
327 team member or users to help compiling on some particular
328 architectures. If you find that some of this hints are wrong, please
329 notify us.
330
331   o If you have problems indicating that configure cannot find a part of
332     the xforms or Xpm library, use the --with-extra-lib and --with-extra-inc
333     options of configure to specify where these libraries reside.
334
335   o Configure will seemingly fail to find xpm.h and forms.h on linux
336     if the kernel headers are not available. Two cases are possible:
337
338       - you have not installed the kernel sources. Then you should
339         install them or at least the kernel-headers package (or
340         whatever it is called in your distribution).
341
342       - you have the sources, but you did a 'make mrproper' in the
343         kernel directory (this  this removes some symbolic links that
344         are needed for compilation). A 'make symlinks' in linux kernel
345         sources fixes that.
346
347   o if you are using RedHat Linux 7.x, you must make sure you have the
348     latest updated gcc and related packages installed (at least -85),
349     or LyX will not compile or will be mis-compiled.
350
351   o if you get an error message when compiling LyX that looks like this :
352
353     ../../src/minibuffer.h:17: using directive `Object' introduced
354     ambiguous type `_ObjectRec *'
355
356     then you need to upgrade the version of the xforms library you have
357     installed.
358
359   o On solaris 2.6, you may have to compile with --with-included-string
360     if compiling with gcc 2.95.2.
361
362   o LyX can be compiled on Tru64 Unix with either GNU's gcc or the default
363     Compaq cxx compiler.
364
365     There are no Alpha-specific problems with gcc.
366
367     The following notes all refer to compilation with the Compaq cxx compiler.
368
369     LyX cannot be compiled on Tru64 Unix 4.0d or 4.0e with the default cxx
370     compiler. You should upgrade to at least cxx V6.2, to be found at
371     ftp::/ftp.compaq.com/pub/products/C-CXX/tru64/cxx/CXX622V40.tar. Users
372     running Tru64 Unix 4.0f and greater should have no real problems compiling
373     LyX.
374
375     cxx V6.2 will compile LyX out of the box.
376     cxx V6.3-020 is also known to work, although there is a bug in
377     /usr/include/cxx/deque that will break compilation in FormPreferences.C.
378     Compaq are investigating, but a patch that works /now/ is:
379
380 --- /usr/include/cxx/deque_safe Mon Mar  4 21:09:50 2002
381 +++ /usr/include/cxx/deque      Mon Mar  4 21:09:00 2002
382 @@ -570,9 +570,11 @@
383        {
384          if (size() >= x.size())
385            erase(copy(x.begin(), x.end(), begin()), end());
386 -        else
387 -          copy(x.begin() + size(), x.end(),
388 -               inserter(*this,copy(x.begin(),x.begin()+size(),begin())));
389 +        else {
390 +         const_iterator mid = x.begin() + difference_type(size());
391 +         copy(x.begin(), mid, begin());
392 +         insert(end(), mid, x.end());
393 +       }
394        }
395        return *this;
396      }
397
398     At the time of writing, cxx V6.5-026 is the latest cxx compiler. It is
399     /not/ recommended. The compiler itself appears to be both buggy and
400     extremely bloated (trebling the size of the stripped LyX binary).
401
402     In order to compile LyX with the cxx compiler, you should run configure
403     with the following flags:
404         CXX='cxx -std strict_ansi'
405         CXXFLAGS='-nopure_cname -nocleanup -ptr /tmp/lyx_cxx_repository -O2'
406         CC='cc -std1'
407     The -nopure_cname flag is needed for compilers V6.3 and above because
408     LyX makes use of functions like popen, pclose that are defined in the
409     c version of <stdio.h> but are not formally part of any c/c++ standard.
410     They are not, therefore, included in the <cstdio> header file.