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.
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++ 4.5.1 | red hat 2.6.18-128.1.1.el5 x86_64 |
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
Previous releases have successfully compiled on 32 bit red hat machines, but we did not have one at our disposal for this release. |
|
GNU g++ 4.3.3 (released 64-bit executables) |
red hat 2.6.18-128.1.1.el5 x86_64 |
|||
GNU g++ 4.1.2 | red hat 2.6.18-128.1.1.el5 x86_64 |
|||
GNU g++ 4.3.2 | debian 2.6.18-4-k7 32 bit i686 | |||
Windows | MinGW cross compile GNU g++ 3.4.2 MinGW runtime 3.7 w32 API 3.2 (released 32-bit lam_conv executable) |
red hat 2.6.18-128.1.1.el5 x86_64 |
64-bit Windows 7 Professional |
We create our Windows executables by cross compiling from Linux and/or Windows using a Mingw-w64 toolchain of g++. |
MinGW64 cross compile GNU g++ 4.5.1 i686 Cygwin 1.7.7 (released 64-bit lamarc executable) |
64-bit Windows 7 Professional |
|||
MacOS X | GNU g++ 4.0.1 |
32 bit intel-mac OS X 10.4.11 Darwin Kernel 8.11.1 |
32 bit intel-mac OS X 10.4.11 Darwin Kernel 8.11.1 |
As of Lamarc version 2.0, we have stopped supporting the Mac OS 9 platform.
We no longer distribute 32-bit executables for the Mac but are still able to compile them. If you have a 32-bit machine, and cannot compile your own executables, please contact us at lamarc@u.washington.edu and we'll see if we can get you an executable that works for you. The distributed wxWidgets code will not compile with g++ 4.0.0. lam_conv, the lamarc file converter does not compile on Mac OS X 10.6 in its current form. However, lamarc will. We recommend you use a copy of lam_conv provided in the .dmg file and compile lamarc to run on your newer Mac. The lamarc in the .dmg should also run on your machine, but a natively compiled version may be faster. |
32 bit powerpc OS X 10.4.11 Darwin Kernel 8.11.0 | ||||
GNU g++ 4.0.1 (released 64-bit executables) |
64 bit intel-mac OS X 10.5.8 Kernel 9.8.0 |
64 bit intel-mac OS X 10.5.8 Kernel 9.8.0 | ||
64 bit intel-mac OS X 10.6.2 Kernel 10.2.0 |
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.9-src.tar.gz cd lamarc-2.1.9 mkdir release cd release
The configure script queries your system and produces a Makefile tailored to your computing environment. Try invoking it like this:
../configureor, 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-wx-config=/path/to/wx-configIf 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.)
makeThis 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 installor
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.
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:
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 makeThe 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 makeLegal values for LAMARC_CODE_OSTYPE are:
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 makeThe 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:
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
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
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@u.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 makeYou 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.
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.