(Previous | Contents | Next)

Compiling LAMARC

We provide executables of LAMARC for many systems, but if you cannot use these, or wish to compile the program yourself, we provide source code as well. This article discusses our experience compiling LAMARC. We welcome your comments on the use of other compilers and computing environments.

LAMARC is written in C++. We tried to avoid advanced or new features of the language, but very old compilers will probably not work. We recommend the use of GNU g++ on any machine which supports it; this is the compiler we used to develop LAMARC, and it works well on most systems.

Compilation and Testing of Released Executables

Here is a list of machine/compiler combinations we have tried, with comments on our success or lack of it.

OS Family Compiler Used Compiled On Tested On Notes
Linux GNU g++ 3.4.6 debian 3.1
2.6.9 kernel
64 bit
Our code should compile on any Linux- or Unix-based system. If you are using a compiler other than g++, the GNU C++ compiler, you may need to give our configure script and makefiles some extra help
GNU g++ 3.4.2 red hat
2.4.21-47 kernel
32 bit
GNU g++ 4.1.2 debian
2.6.18-4 kernel
32 bit
Windows MinGW cross compile from Linux
 GNU g++ 3.4.2
 MinGW runtime 3.7
 w32 API 3.2
red hat
2.4.21-47 kernel
32 bit
Windows XP
32 bit
We create our Windows executables by cross compiling from Linux using the Mingw tools. Compiling directly on a windows box should therefore work well under the Mingw or Cygwin tool sets using g++, though we have not tested this ourselves.

If the compiler you use expects you to explicitly set the heap size, you may need to set it to be quite large in order to run the program on an interesting data set.
MacOS X GNU g++ 3.1, 3.3 intel-mac intel-mac As of Lamarc version 2.0, we have stopped supporting the Mac OS 9 platform.
We compile and distibute our OS X binary as a single universal binary, which runs on both Intel macs and PowerPC macs. If you're compiling your own copy, you probably don't need to do that.
GNU g++ 3.1, 3.3 ppc

Basic Instructions for Compiling and Installing LAMARC on *-nix Systems

Here are basic instructions for compiling on Linux/Unix/Mac OSX systems.

Begin by un-taring the distribution and creating a sub-directory to compile in. This will keep your object files from cluttering up a listing of the top level of the distribution.

    tar xfvz lamarc-2.1.2.tar.gz
    cd lamarc-2.1.2
    mkdir release
    cd release
    

The configure script queries your system and produces a Makefile tailored to your computing environment. Try invoking it like this:

    ../configure
    
or, if that doesn't work, like this:
    sh ../configure
    

The configure script will probably complain that you don't have wxWidgets installed. (wxWidgets is a free, open source toolkit for GUI applications. Through it, we provide native look-and-feel Linux, Mac OS X, and Windows GUI interfaces to our file converter using a single code base.) If you already have wxWidgets, you can invoke configure like this:

    sh ../configure --with-wxconfig=/path/to/wx-config
    
If you don't have wxWidgets, or your current version is too old, the following invocation should build a wxWidgets distribution for you. (Be warned that this may take some time.)
    ../configure --enable-buildwx
    

If none of these variations for invoking the configure script worked for you, skip ahead to Advanced Configuration Options.

You are now ready to make lamarc. (It is recommended that you use the GNU make utility. On some systems it may be called gmake.)

    make
    
This will produce executables lamarc and lam_conv if you're running on a Unix or Linux system. If you're running under Mac OS X, you should get clickable executables.

To install the executables and html documentation (you may need sysadmin privilidges to do this, and it is not required to use the program) type either

    make install
    
or
    make install-strip
    

Either of these should install the executables in /usr/local/bin and the documentation under /usr/local/html/lamarc. Executables installed either way have the same compute time performance. The install-strip versions are smaller but provide no debugging information, should you run into problems.

Advanced Configuration Options

For most users, the configure script provided with the distribution should work as described above. However, there are several situations in which you may wish to change the behavior of the configure script. These include when:

If these techniques are not adequate to solve your problems, you may wish to:

Setting LAMARC_CODE_OSTYPE

While most of the lamarc code is not dependent on the user's operating system, there are a few minor differences in I/O handling and standard library headers. These differences require the setting of the variable LAMARC_CODE_OSTYPE so that appropriate code can be exercised for each operating system.

Under normal circumstances, the configure script should be able to guess the correct value for LAMARC_CODE_OSTYPE. If it cannot, you may set the value by including an assignment to it when you invoke the configure script. For example

    ../configure LAMARC_CODE_OSTYPE=LAMARC_COMPILE_MACOSX
    make
    
The assignment to LAMARC_CODE_OSTYPE should come after any other arguments to the configure script, for example:
    ../configure --enable-debug LAMARC_CODE_OSTYPE=LAMARC_COMPILE_LINUX
    make
    
Legal values for LAMARC_CODE_OSTYPE are:

Setting GUI_TOOLKIT

While most of the lamarc code is not dependent on the user's operating system, there are a few minor differences in I/O handling and standard library headers. These differences require the setting of the variable LAMARC_CODE_OSTYPE so that appropriate code can be exercised for each operating system.

Under normal circumstances, the configure script should be able to guess the correct value for GUI_TOOLKIT. If it cannot, or you wish to use a different toolkit, you should set the value for GUI_TOOLKIT. As with setting LAMARC_CODE_OSTYPE, the assignment is made at the end of the invocation of configure. For example:

    ../configure GUI_TOOLKIT=gtk2
    make
    
The assignment to GUI_TOOLKIT should come after any other arguments to the configure script, and is most likely to be needed when you are also setting LAMARC_CODE_OSTYPE. For example:
    ../configure --enable-debug LAMARC_CODE_OSTYPE=LAMARC_COMPILE_MACOSX GUI_TOOLKIT=mac
    make
    

Tested values for GUI_TOOLKIT are:

It is possible that other toolkit values supported by wxWidgets work, including x11, Motif, and OS/2. If you wish to build for one of these toolkits, we suggest you start with wxWidget's information on supported platforms (http://www.wxwidgets.org/docs/platform.htm).

Specifying non-standard compiler and/or build flags

The configure script is designed to allow you to specify a compiler or to pass options to the compiler or preprocessor. For example, if you are testing out a new C++ compiler you might invoke it like this:

    ../configure CXX=/path/to/my/compiler CXXFLAGS="I /path/to/my/include/files"
    make
    

For more information on options and environment variables that effect the configure script type

    ../configure --help
    

Compiling a batch only version of the converter

If you cannot successfully build for any GUI_TOOLKIT, or if you wish to run the lamarc file converter as part of a batch process, you can build a batch only version of the converter with the following commands (add CXX and CXXFLAGS, etc at the end if you need them):

    ../configure --disable-gui --enable-buildwx
    make
    

Compiling a wxWidgets-less converter

We recommend the following step only as a last resort. If you are going to attempt it, we recommend that you email us at lamarc@gs.washington.edu. to make sure there isn't a better solution.

If you unable to build wxWidgets at all (and therefore not have access to the converter) you may instead configure and make as follows:

    ../configure --disable-converter
    make old_lam_conv
    make
    
You must explicitly give the argument to "make old_lam_conv" -- it will not otherwise be built. Please be warned that old_lam_conv is no longer maintained and will not have all features of the new converter.

Editing the configure script and Makefile yourself

If none of the above techniques allows you to build the lamarc programs, you have one further option -- edit the configure script and Makefiles yourself.

The easiest way to do this is to edit them the same way we do, using autoconf and automake. These tools are available at the following locations:

You may also wish to read additonal documentation available at

Make any edits you need to Makefile.am or configure.ac and then issue the following series of commands

    aclocal
    autoconf
    autoheader
    automake --add-missing
    

You may then proceed to configure and make as in the section Basic Instructions... above.

(Previous | Contents | Next)