X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=INSTALL;h=43cade3ca836845b316b85bd26c686bed435c27b;hb=b1e1c598c40ae81a5565838f8606aa94b5a8a95e;hp=f9048236aac000f89984b35d5e9bae642f3adf50;hpb=a8a90bf854958562ddf588e3eddbc2b7cfa7f976;p=lyx.git diff --git a/INSTALL b/INSTALL index f9048236aa..43cade3ca8 100644 --- a/INSTALL +++ b/INSTALL @@ -1,11 +1,3 @@ -Note for CVS checkouts ----------------------- - -If you have checked this out from CVS, you need to have -automake, autoconf, and gettext installed. Then, -type "./autogen.sh" to build the needed configuration -files and proceed as stated below. - Compiling and installing LyX ============================ @@ -24,53 +16,84 @@ These four steps will compile, test and install LyX: runs the program so you can check it out. 4) make install - will install it. + will install it. You can use "make install-strip" instead + if you want a smaller binary. +Note for CVS checkouts +---------------------- + +If you have checked this out from CVS, you need to have +automake, autoconf, and gettext installed. Then, +type "./autogen.sh" to build the needed configuration +files and proceed as stated below. + +You will also probably need GNU m4 (perhaps installed as gm4). + Requirements ------------ -You will need to have both an Xforms library and Xpm library to compile -LyX. It is imperative that you have the correct versions of these +First of all, you will also need a recent C++ compiler, where recent +means that the compilers are close to C++ standard conforming. +Compilers that are known to compile LyX are egcs 1.1.x, gcc 2.95.x and +later, and Digital C++ version 6.1 and later. Please tell us your +experience with other compilers. It is _not_ possible to compile LyX +with gcc 2.7.x and 2.8.x, and this is not likely to change in the +future. + +Note that, contrary to LyX 1.0.x, LyX 1.2.x makes great use of C++ +Standard Template Library (STL); this means that gcc users will have +to install the relevant libstdc++ library to be able to compile this +version. + +Both an Xforms and Xpm libraries should be installed to compile LyX. +It is imperative that you have the correct versions of these libraries, and their associated header files. -As of LyX version 1.0.0, you will need to have Xforms library and header -version 0.81, 0.86, or 0.88. Version 0.88 is a stable release and the -recommended version. On some systems, such as linux ELF, there are shared -library versions of the Xforms library, which require an installation step -to configure the system. +As of LyX version 1.2.0, you will need to have Xforms library and +header version 0.88 or 0.89. Version 0.89.6 is the one which works +best, but the old stable 0.88.1 version is still supported. On some +systems, such as linux ELF, there are shared library versions of the +Xforms library, which require an installation step to configure the +system. Xforms is available (free) only in binary format, source code is not available. If it is not available for your machine, contact the Xforms developers to request a version for your system. You can get it from - http://bragg.phys.uwm.edu/xforms - ftp://bragg.phys.uwm.edu/pub/xforms/ + http://world.std.com/~xforms/ + ftp://ncmir.ucsd.edu/pub/xforms/ ftp://ftp.lyx.org/pub/xforms/ ftp://ftp.fu-berlin.de/unix/X11/gui/xforms ftp://ftp.cs.ruu.nl/pub/XFORMS/ -In addition, you must have libXpm version 4.7 (or newer; 4.8 rumoured -to work). - -libXpm can be found at: - http://www.funet.fi/pub/Linux/sunsite/X11/libs/!INDEX.html - (or similar locations at other sunsites like sunsite.unc.edu) +If you use a rpm-based linux distribution, such as RedHat or Mandrake, +we recommend that you grab a version of xforms from + ftp://ftp.lyx.org/pub/lyx/contrib +as the rpm packages commonly found are compiled against glibc 2.0 +instead of 2.[12], and this causes occasional crashes. -If you compile LyX with gcc, you should not need to have libg++ installed -on most systems. However, see the note in the section `Problems'. +In addition, you must have libXpm version 4.7 or newer. -If you make modifications to files in src/ (for example by applying a -patch), you will need to have the GNU gettext package installed, due to -some dependencies in the makefiles. You can find the latest (alpha) -version from: +Note that the Qt and Gnome frontends are still under development, and +as a result are only useful if you want to help out with testing and +development. + +If you make modifications to files in src/ (for example by applying a +patch), you will need to have the GNU gettext package installed, due +to some dependencies in the makefiles. You can find the latest version +from: - ftp://alpha.gnu.org/gnu/gettext-0.10.xx.tar.gz. + ftp://ftp.gnu.org/gnu/gettext/gettext-0.11.4.tar.gz LyX contains a hack to work around this, but you should not rely too much on it. +To use the thesaurus, you will need to install libAikSaurus, available +from : + http://aiken.clan11.com/aiksaurus/ + Finally, the two following programs should be available at configuration time: @@ -81,9 +104,9 @@ configuration time: the machine on which LyX is built is not the one where it will run). - o LaTeX2e should be correctly setup for the user you are logged + o LaTeX2e should be correctly setup for the user you are logged in as. Otherwise, LyX will not be able to run a number of tests. Note - that users can run these tests manually with Option->Configure. + that users can run these tests manually with Edit>Reconfigure. Creating the Makefile @@ -110,11 +133,32 @@ flags: o --with-extra-prefix[=DIRECTORY] that is equivalent to --with-extra-lib=DIRECTORY/lib --with-extra-inc=DIRECTORY/include - If DIRECTORY is not specified, the current prefix is used. + If DIRECTORY is not specified, the current prefix is used. + + o --with-version-suffix will install LyX as lyx-, e.g. lyx-1.2.0 + The LyX data directory will be something like /lyx-1.2.0/. + Additionally your user configuration files will be found in e.g. + $HOME/.lyx-1.2.0 + + You can use this feature to install more than one version of LyX on + the same system. You can optionally specify a "version" of your own, + by doing something like : ./configure --with-version-suffix=-latestcvs - o --with-two-colors=[yes|no] that forces LyX to use two colors pixmaps - (bitmaps) instead of the full-colored standard ones. Defaults to no. + Note that the standard configure options --program-prefix,--program-suffix + and the others will not affect the shared LyX directory etc. so it + is recommended that you use --with-version-suffix (or --prefix) instead. + o --enable-optimization=VALUE enables you to set optimization to a + higher level as the default (-O), for example --enable-optimization=-O3. + + o --disable-optimization - you can use this to disable compiler + optimization of LyX. The compile may be much quicker with some + compilers, but LyX will run more slowly. + + o --enable-debug will add debug information to your binary. This + requires a lot more disk space, but is a must if you want to try to + debug problems in LyX. The default is to have debug information + for development versions and prereleases only. There are also flags to control the internationalization support in LyX: @@ -139,12 +183,7 @@ LyX: Moreover, the following generic configure flags may be useful: o --prefix=DIRECTORY specifies the root directory to use for - installation. [defaults to where lyx has already been installed or - /usr/local] - - o --program-suffix=STRING sets the name of the installed LyX binary and - of the LyX library directory to lyxSTRING. This may be used to - compile lyx as lyx-1.0.0 and avoid clashes with earlier/later versions. + installation. [defaults to /usr/local] o --datadir=DIRECTORY gives the directory where all extra LyX files (lyxrc example, documentation, templates and layouts @@ -173,33 +212,22 @@ give a value to the CXX variable. If you encounter problems, please read the section 'Problems' at the end of this file. -In particular, the following options could be useful in some -desperate cases: - - o --with-debug that specifies whether you want to have debug information - by default on standard error. Default is no. +In particular, the following options could be useful in some desperate +cases: - o --with-warnings that make the compiler output more warnings during - the compilation of LyX. Opposite is --without-warnings. By default, + o --enable-warnings that make the compiler output more warnings during + the compilation of LyX. Opposite is --disable-warnings. By default, this flag is on for development versions only. - o --with-broken-headers that provides prototypes to replace functions - not correctly defined in SunOS4 and SCO header files. Its only effect is - to suppress a few warnings. It is autodetected by default. + o --enable-assertions that make the compiler generate run-time + code which checks that some variables have sane values. Opposite + is --disable-assertions. By default, this flag is on for + development versions only. o --without-latex-config that disables the automatic detection of your - latex. This detection is automatically disabled if latex cannot be found. - If you find that you have to use this flag, please report it as a bug. - - o --with-broken-const attempts to fix a bug in gcc 2.7.[012] (see the - section 'Problems'). - - o ---with-gcc-hack which provide a wrapper around gcc that tries to - compile without optimization after a compilation failed (see the - section 'Problems'). - - o --without-liberty suppresses the detection of the -liberty library - (see the section 'Problems'). + latex configuration. This detection is automatically disabled if + latex cannot be found. If you find that you have to use this + flag, please report it as a bug. Compiling and installing LyX @@ -212,6 +240,12 @@ Once you've got the Makefile created, you just have to type: All should be OK ;) +Since the binaries with debug information tend to be huge (although +this does not affect the run-time memory footprint), you might want +to strip the lyx binary. In this case replace "make install" with + + make install-strip + BTW: in the images subdirectory there is also a small icon "lyx.xpm", that can be used to display lyx-documents in filemanagers. @@ -238,17 +272,29 @@ the source code directory. After you have installed LyX for one architecture, use `make distclean' before reconfiguring for another architecture. -Stripping LyX -------------- +Preparing a binary distribution for the use of others +------------------------------------------------------ + + o Compile LyX with the right compiler switches for your + architecture. Make sure you use the --without-latex-config switch + of configure, since others might not be interested by your + configuration :-) -A LyX binary for linux is about 1M when compiled without debug-information -and with dynamic libraries. If yours is much bigger you probably compiled -it with debug-informations (-g). If you don't want to debug LyX just enter + o Create a file README.bin describing your distribution and + referring to *you* if problems arise. As a model, you can use the + file development/tools/README.bin.example, which can be a good + starting point. - strip src/lyx + o Type `make bindist'. This will create a file + lyx-1.xx.yy-bin.tar.gz. Rename it to reflect you architecture + and the peculiarities of your build (e.g. static vs. dynamic). -before installing. Note that this is done automatically for public -versions. + o Check that everything is correct by unpacking the distribution + in some private place and running it. In particular, check the + output of `ldd lyx' to know which libraries are really needed. + + o Upload your binary file to ftp.devel.lyx.org:/pub/incoming, and + notify larsbj@lyx.org. Problems @@ -263,131 +309,79 @@ notify us. the xforms or Xpm library, use the --with-extra-lib and --with-extra-inc options of configure to specify where these libraries reside. - o Configure will seemingly fail to find xpm.h and forms.h on linux if - you did a 'make mrproper' in the kernel directory, because this - removes some symbolic links that are needed for compilation. A 'make - symlinks' in linux kernel sources fixes that. + o Configure will seemingly fail to find xpm.h and forms.h on linux + if the kernel headers are not available. Two cases are possible: - o If you have GNU gettext installed on your system (e.g. on linux), - you will get tons of warnings like: + - you have not installed the kernel sources. Then you should + install them or at least the kernel-headers package (or + whatever it is called in your distribution). - bullet_forms.C:101: warning: passing `char *' to argument 1 of - `__builtin_constant_p(int)' lacks a cast + - you have the sources, but you did a 'make mrproper' in the + kernel directory (this this removes some symbolic links that + are needed for compilation). A 'make symlinks' in linux kernel + sources fixes that. - These are in harmless warnings caused by a bug in libintl.h, but - will be solved if you use --with-included-gettext when configuring - LyX. + o if you are using RedHat Linux 7.x, you must make sure you have the + latest updated gcc and related packages installed (at least -85), + or LyX will not compile or will be mis-compiled. + + o if you get an error message when compiling LyX that looks like this : + + ../../src/minibuffer.h:17: using directive `Object' introduced + ambiguous type `_ObjectRec *' + + then you need to upgrade the version of the xforms library you have + installed. + + o On solaris 2.6, you may have to compile with --with-included-string + if compiling with gcc 2.95.2. - o It is possible to compile lyx with Digital Unix cxx compiler - version 6.1 (and presumably compaq C++ 6.2 on both Tru64 unix and - linux/alpha, when this will be available), provided one uses - CXX=cxx - CXXFLAGS='-ptr /tmp/lyx_cxx_repository -std strict_ansi -g -O' - - Note that this will not work when compiling directly from the cvs - repository, due to the tricks used by automake for dependencies. Ask - Jean-Marc.Lasgouttes@inria.fr for a workaround. - - o On Digital Unix with cxx, you may have a compilation error in - lyx_main.C if you have GNU gettext installed. This is due to a bug - in gettext. To solve this, you can either (1) configure with - --with-included-gettext or (2) add -D__STDC__ to cxx flags. - - o The configure script seems to hang while it is checking the LaTeX setup. - We think that this is not a real problem, but rather a symptom of the - fact that the ec-fonts are being rendered. This process can take quite - some time, so the remedy is simply to have patience. (The fonts need to - be rendered at some point to be usable anyways.) - - o According to John Collins , on SunOS 4.1.3 you may - find two sets of X libraries, and they are of course incompatible :-) - One is the set provided as part of OpenWindows, and one is the standard - X distribution (e.g., X11R5). If you encounter problems (or if, for - some obscure reasons configure cannot find your X libraries) you can - use the following options: - - o --x-libraries=DIRECTORY that indicates where the X libraries reside. - - o --x-includes=DIRECTORY that indicate where the X include files reside. - - The standard X11R5 libraries should work when the OpenWindows ones - don't. - - o Some systems lack functions that LyX needs. To fix this, configure - tries to link against the -liberty library, if it is available. - If you experience problems with missing symbols at link time, you - could try to install libiberty.a, which comes with several GNU - packages (in particular libg++). In any case, please report your - problems to lyx-devel@lists.lyx.org. - - The option --without-liberty disable the detection of -liberty. It - is meant for debugging purpose only. - - o There are several known bugs in gcc 2.7.xx that cause compiler - errors. This is in particular the case in spellchecker.C under - HP-UX 9.05 (ask Bernhard Iselborn for - more comments) and in lyxrc.C under Linux/Alpha or DEC OSF/1. In - both cases, the solution is to recompile the offending file - without optimization and resume the compilation process with - 'make'. To make things simpler, you can use the option - --with-gcc-hack of configure that will do that for you - automatically. - - o According to David Sundqvist , some - changes are needed to compile with aCC on HP-UX 10.20. These are the - relevant changes in the makefile (with comments tagged on): - - CXX = /opt/aCC/bin/aCC - CXXFLAGS = -O +inst_none # The aCC compiler tries to run instantiations - # which currently break. - - LIBS = -lforms -lXpm -lSM -lICE -lc -lm -lX11 -lCsup # must link with Csup - LDFLAGS = -L/opt/aCC/lib # perhaps not needed. - - o There is a bug in gcc 2.7.[012] in the handling of const which can - cause various unpredictable problems. If you experience weird - crashes with a LyX compiled by gcc 2.7.[012], try to configure - with the --with-broken-const flag and recompile. If this improves - things, please report it to the mailing list. Note that this - compiler bug is fixed in gcc 2.7.2.1 and in several Linux - distributions of gcc 2.7.[012]. - - This bug is currently not autodetected, but any code to do so - would be welcome. A patch for gcc 2.7.2 is as follows: - -*** clean-ss-951203/expr.c Sun Nov 26 08:18:07 1995 ---- ss-951203/expr.c Mon Dec 4 11:41:18 1995 -*************** expand_expr (exp, target, tmode, modifie -*** 4582,4587 **** - through a pointer to const does not mean that the value there can - never change. Languages where it can never change should - also set TREE_STATIC. */ -! RTX_UNCHANGING_P (temp) = TREE_READONLY (exp) | TREE_STATIC (exp); - return temp; - } ---- 4582,4588 ---- - through a pointer to const does not mean that the value there can - never change. Languages where it can never change should - also set TREE_STATIC. */ -! RTX_UNCHANGING_P (temp) = TREE_READONLY (exp) & TREE_STATIC (exp); - return temp; - } - - - o On Digital Unix with gcc, you can get warnings like - -warning, LyXFamilyNames not found in original or external symbol tables, value defaults to 0 -warning, LyXSeriesNames not found in original or external symbol tables, value de - - These concern symbols beginning with an uppercase letter and seems - to be harmless. Similarly, the compilation can end with the - following warning: - -/bin/ld: -Warning: Linking some objects which contain exception information sections - and some which do not. This may cause fatal runtime exception handling - problems (last obj encountered without exceptions was ../intl/libintl.a). - - - You can safely ignore it. + o LyX can be compiled on Tru64 Unix with either GNU's gcc or the default + Compaq cxx compiler. + + There are no Alpha-specific problems with gcc. + + The following notes all refer to compilation with the Compaq cxx compiler. + + LyX cannot be compiled on Tru64 Unix 4.0d or 4.0e with the default cxx + compiler. You should upgrade to at least cxx V6.2, to be found at + ftp::/ftp.compaq.com/pub/products/C-CXX/tru64/cxx/CXX622V40.tar. Users + running Tru64 Unix 4.0f and greater should have no real problems compiling + LyX. + cxx V6.2 will compile LyX out of the box. + cxx V6.3-020 is also known to work, although there is a bug in + /usr/include/cxx/deque that will break compilation in FormPreferences.C. + Compaq are investigating, but a patch that works /now/ is: + +--- /usr/include/cxx/deque_safe Mon Mar 4 21:09:50 2002 ++++ /usr/include/cxx/deque Mon Mar 4 21:09:00 2002 +@@ -570,9 +570,11 @@ + { + if (size() >= x.size()) + erase(copy(x.begin(), x.end(), begin()), end()); +- else +- copy(x.begin() + size(), x.end(), +- inserter(*this,copy(x.begin(),x.begin()+size(),begin()))); ++ else { ++ const_iterator mid = x.begin() + difference_type(size()); ++ copy(x.begin(), mid, begin()); ++ insert(end(), mid, x.end()); ++ } + } + return *this; + } + + At the time of writing, cxx V6.5-026 is the latest cxx compiler. It is + /not/ recommended. The compiler itself appears to be both buggy and + extremely bloated (trebling the size of the stripped LyX binary). + + In order to compile LyX with the cxx compiler, you should run configure + with the following flags: + CXX='cxx -std strict_ansi' + CXXFLAGS='-nopure_cname -nocleanup -ptr /tmp/lyx_cxx_repository -O2' + CC='cc -std1' + The -nopure_cname flag is needed for compilers V6.3 and above because + LyX makes use of functions like popen, pclose that are defined in the + c version of but are not formally part of any c/c++ standard. + They are not, therefore, included in the header file.