-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
============================
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.1.5, you will need to have Xforms library and header
-version 0.88 or 0.89. 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
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).
+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.
-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)
+In addition, you must have libXpm version 4.7 or newer.
-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 gcc 2.8.1 and 2.95.x, the various versions of
-egcs and Digital C++ version 6.1. Please tell us your experience with
-other compilers. It is _not_ possible to compile LyX with gcc 2.7.x,
-and this is not likely to change in the future.
+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:
-Note that, contrary to LyX 1.0.x, LyX 1.1.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.
-
-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:
-
- ftp://alpha.gnu.org/gnu/gettext-0.10.xx.tar.gz.
+ ftp://ftp.gnu.org/gnu/gettext-0.10.xx.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:
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
--with-extra-lib=DIRECTORY/lib --with-extra-inc=DIRECTORY/include
If DIRECTORY is not specified, the current prefix is used.
- o --with-lyxname=STRING sets the name of the installed LyX binary and
- of the LyX library directory to STRING. This may be used to
- compile lyx as lyx-1.1 and avoid clashes with earlier/later
- versions. Default is "lyx".
+ o --with-version-suffix will install LyX as lyx-<version>, e.g. lyx-1.2.0
+ The LyX data directory will be something like <whatever>/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
+
+ 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:
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]
+ installation. [defaults to /usr/local]
o --datadir=DIRECTORY gives the directory where all extra LyX
files (lyxrc example, documentation, templates and layouts
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 --enable-assertions that make the compilier generater run-time
+ 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.
flag, please report it as a bug.
o --without-liberty suppresses the detection of the -liberty library
- (see the section 'Problems').
+ (see the section `Problems').
Compiling and installing LyX
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 maight want
+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
------------------------------------------------------
o Compile LyX with the right compiler switches for your
- architecture. In particular you might want to ensure that
- libraries like xforms and xpm are statically linked. To this end,
- you can use a command like
-
- make LYX_LIBS='/foo/libforms.a /bar/libXpm.a'
-
- Moreover, make sure you use the --without-latex-config switch
+ architecture. Make sure you use the --without-latex-config switch
of configure, since others might not be interested by your
- configuration :-)
+ configuration :-)
o Create a file README.bin describing your distribution and
referring to *you* if problems arise. As a model, you can use the
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
-
- 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.
+ - 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.
- o It is possible to compile lyx with Tru64 Unix cxx compiler
- version 6.2, provided one uses
- CXX=cxx
- CXXFLAGS='-ptr /tmp/lyx_cxx_repository -std strict_ansi -g -O'
+ 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 :
- 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.
+ ../../src/minibuffer.h:17: using directive `Object' introduced
+ ambiguous type `_ObjectRec *'
- o On Tru64 Unix, you may have to compile with
- --with-included-string to work around a Tru64 linker limitation
- (the STL string template creates names which may be too long).
+ then you need to upgrade the version of the xforms library you have
+ installed.
- o On Tru64 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 According to John Collins <collins@phys.psu.edu>, 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 On solaris 2.6, you may have to compile with --with-included-string
+ if compiling with gcc 2.95.2.
o According to David Sundqvist <David_Sundqvist@vd.volvo.se>, some
changes are needed to compile with aCC on HP-UX 10.20. These are the
# 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 On Digital Unix with gcc, you can get warnings like
+ LDFLAGS = -L/opt/aCC/lib # perhaps not needed.
-warning, LyXFamilyNames not found in original or external symbol tables, value defaults to 0
+ o LyX can be compiled on Tru64 Unix with either GNU's gcc or the default
+ Compaq cxx compiler.
- These concern symbols beginning with an uppercase letter and seems
- to be harmless. Similarly, the compilation can end with the
- following warning:
+ There are no Alpha-specific problems with gcc.
-/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).
+ 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.
- You can safely ignore it.
-
+ 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. Not only do the bugs in the system header files still
+ exist, but the compiler itself appears to be both buggy and extremely
+ bloated (trebles 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 <stdio.h> but are not formally part of any c/c++ standard.
+ They are not, therefore, included in the <cstdio> header file.