These four steps will compile, test and install LyX:
- 0) Linux users beware: if compiling the Qt frontend, you need
- qt4 and qt4-devel packages of the same version to compile LyX.
+ 0) Linux users beware: You need qt4 and qt4-devel packages
+ of the same version to compile LyX.
- 1) ./configure
- configures LyX according to your system.
- When compiling for Qt, you may have to set
- --with-qt4-dir=<path-to-your-qt4-installation>
- if the environment variable QTDIR is not set.
+ In general, it is also recommended to have pkg-config
+ installed (the name might vary depending on your
+ distribution).
+
+ 1) ./configure configures LyX according to your system. You
+ may have to set --with-qt4-dir=<path-to-your-qt4-installation>
+ (for example, "--with-qt4-dir=/usr/share/qt4/") if the
+ environment variable QTDIR is not set and pkg-config is not
+ available.
+
+ See Note below if ./configure script is not present.
2) make
compiles the program.
if you want a smaller binary.
-Note for Subversion checkouts
+Note for Git checkouts
-----------------------------
-If you have checked this out from Subversion, you need to have:
-* automake >= 1.5
-* autoconf >= 2.52
-* gettext >= 0.12
+If you have checked this out from Git, you need to have:
+* automake >= 1.8
+* autoconf >= 2.59c
+* gettext >= 0.16.1
Then type "./autogen.sh" to build the needed configuration
-files and proceed as stated below.
+files and proceed as stated above/below.
You will also probably need GNU m4 (perhaps installed as gm4).
+
Requirements
------------
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 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.
+means that the compilers are close to C++ standard conforming (gcc 4.x).
-LyX 1.4.x makes great use of C++ Standard Template Library (STL).
+LyX 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 of LyX. Users of gcc 2.95.x
-will have to install the STLPort version of these libraries as the
-ones that come with gcc 2.95.x are too broken for us to use.
-
-LyX has been tested with Qt 4.1.5. The only special point to
-make is that you must ensure that both LyX and the Qt libraries are
-compiled with the same C++ compiler.
-
-Note that if Qt is using Xft2/fontconfig, you may need to install the
-latex-xft-fonts package (at ftp://ftp.lyx.org/pub/lyx/contrib/) to get
-maths symbols displayed properly. To find out, type:
+library to be able to compile this version of LyX.
- ldd `which lyx` | grep fontconfig
+For full LyX usability we suggest to use at least Qt 4.8 which has been
+widely tested. For compilation you need to compile against at least
+Qt 4.5.0. The only special point to make is that you must ensure that both
+LyX and the Qt libraries are compiled with the same C++ compiler.
-at the console. Both RH8 and Debian unstable distributions are known
-to use fontconfig.
+To build LyX with spell checking capabilities included you have to
+install at least one of the development packages of the spell checker
+libraries. See the RELEASE-NOTES for details.
-If, however, your version of Qt does not use fontconfig, then TeX
-fonts should be added to the font path. 'man xset' is your friend.
* Other things to note
from:
ftp://ftp.gnu.org/gnu/gettext/
-To use the thesaurus, you will need to install libAikSaurus, available
-from:
- http://aiksaurus.sourceforge.net/
-
The two following programs should be available at configuration time:
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 Edit>Reconfigure.
+ that users can run these tests manually with Tools>Reconfigure.
- o Python 2.3 or newer installed to be able to import older LyX files
+ o Python 2.4 or newer must be installed. Python is used for many
+ simple tasks that are executed by external scripts, such as the
+ automatic configuration step and the import of older LyX documents
with the lyx2lyx script (this script is called automatically when
- opening a file).
+ opening a file). Python 3.0 or later is not supported.
Creating the Makefile
./configure
-For more complicated cases, LyX configure takes the following specific
+For more complicated cases, LyX configure honors the following specific
flags:
+ o --enable-build-type=[rel(ease), pre(release), dev(elopment), prof(iling), gprof]
+ allows to tweak the compiled code. The following table describes
+ the settings in terms of various options that are described later
+
+ release prerelease development profiling gprof
+ optimization -O2 -O2 -O -O2 -O2
+ assertions X X
+ stdlib-debug X
+ concept-checks X X
+ warnings X X
+ debug X X X X
+ gprof X
+
+ The default are as follows in terms of version number
+ release: stable release (1.x.y)
+ prerelease: version number contains alpha, beta, rc or pre.
+ development: version number contains dev.
+
o --with-extra-lib=DIRECTORY that specifies the path where LyX will
find extra libraries (qt4) it needs. Defaults to NONE
(i.e. search in standard places). You can specify several
--with-extra-lib=DIRECTORY/lib --with-extra-inc=DIRECTORY/include
If DIRECTORY is not specified, the current prefix is used.
- o --with-version-suffix will install LyX as lyx-<version>, e.g. lyx-1.4.1
- The LyX data directory will be something like <whatever>/lyx-1.4.1/.
+ o --with-version-suffix[=SUFFIX] will install LyX as lyxSUFFIX. The
+ LyX data directory will be something like <whatever>/lyxSUFFIX/.
Additionally your user configuration files will be found in e.g.
- $HOME/.lyx-1.4.1
+ $HOME/.lyxSUFFIX. The default for SUFFIX is "-<currentversion>",
+ e.g. lyx-1.6.1.
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=-latestsvn
+ ./configure --with-version-suffix=-latestdev
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.
-
There are also flags to control the internationalization support in
LyX:
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:
+The following options allow to tweak more precisely the generated code:
+
+ o --enable-gprof instruments the code for use with the gprof
+ profiler. The result are only meaningful in conjunction with
+ --enable-build-type=release.
+
+ 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
want to use. The default value is qt4, which is the only available
frontend for now.
+ o --enable-monolithic-build[=boost,client,insets,mathed,core,tex2lyx,frontend-qt4]
+ that enables monolithic build of the given parts of the source
+ code. This should reduce the compilation time provided you have
+ enough memory (>500MB).
+
Compiling and installing LyX
----------------------------
architecture, use `make distclean' before reconfiguring for another
architecture.
-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 :-)
-
- 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.
-
- 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).
-
- 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
--------
architectures. If you find that some of this hints are wrong, please
notify us.
- o On SUN Sparc Solaris 8, you need gnumake. The LyX makefiles do not
+ o On SUN Sparc Solaris, you need gnumake. The LyX makefiles do not
work with Solaris make.
- The Solaris ar seg-faults trying to build the insets library. You
+ The Solaris 8 ar seg-faults trying to build the insets library. You
will need to use the ar from the GNU binutils for this subdirectory.
+ There is no problem with the Solaris 9 and 10 ar.
+
+ Qt4 uses the Xrender X11 extension for antialiased fonts. This
+ extension was added to Xsun starting from the Solaris 10 8/07
+ release, but it is not activated by default. To activate it, you
+ must issue (as root) the following command:
+ svccfg -s svc:/application/x11/x11-server setprop options/server_args=+xrender
+ and then restart the X server.
+
+ There is a problem with the fontconfig library shipped with
+ Solaris 10 8/07 causing a seg-fault when it is used by Qt4.
+ Until this is fixed, a workaround is replacing the shared library
+ /usr/lib/libfontconfig.so.1 with a copy from a previous release or
+ installing a new version of fontconfig from http://www.sunfreeware.com/
+
+ On Solaris, the default fontconfig configuration gives preference
+ to bitmap fonts at (not so small) sizes. As bitmapped fonts are not
+ antialiased, you may prefer changing this configuration. This may be
+ done by adding the following stanza
+
+ <match target="pattern">
+ <edit name="prefer_bitmap">
+ <bool>false</bool>
+ </edit>
+ </match>
+
+ to either ~/.fonts.conf (for a per-user change) or /etc/fonts/local.conf
+ (for a global system change). The stanza should be added between the
+ <fontconfig> and </fontconfig> tags. If neither ~/.fonts.conf nor
+ /etc/fonts/local.conf exist, you can create them with the following
+ content:
+
+ <?xml version="1.0"?>
+ <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+ <fontconfig>
+ <match target="pattern">
+ <edit name="prefer_bitmap">
+ <bool>false</bool>
+ </edit>
+ </match>
+ </fontconfig>
- 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 <stdio.h> but are not formally part of any c/c++ standard.
- They are not, therefore, included in the <cstdio> header file.