VASSAR COLLEGE
POUGHKEEPSIE · NEW YORK
Department of Pirates
 
 

Compiling BOINC on Red Hat Linux 7.x


These notes describe some of the extra steps we had to take in order to compile and build a project with the Berkeley Open Infrastructure for Network Computing (BOINC) on a Red Hat 7.3 Linux system. They may also be useful to those using other platforms.

Last modified: 18 November 2004
BOINC (the Berkeley Open Infrastructure for Network Computing) has been developed on many platforms, including Debian and Red Hat 8.0. We have been using Red Hat 7.3 so these notes describe what we have done to get BOINC to build on that platform. Hopefully these may also be of use to developers on other platforms.

CVS

You can copy the source files from either BOINC source branch and then build from that, but it's much easier to get in sync with the BOINC developers if you use CVS. Instructions for connecting to the BOINC CVS archives are here.

What may not be clear is that there are two concurrently evolving branches of the code. The development branch contains the latest and greatest improvements. It is the cutting edge of BOINC; and it is the bleading edge. To checkout the development branch give the command

cvs -d :pserver:anonymous@alien.ssl.berkeley.edu:/home/cvs/cvsroot checkout boinc On the other hand, there is also a more stable branch which is only revised and updated after more testing. This is called boinc_public, and you can check this set of files out of CVS with the command cvs -d :pserver:anonymous@alien.ssl.berkeley.edu:/home/cvs/cvsroot checkout boinc_public (that is, change the final boinc to boinc_public).

GNU automake / autoconf

If you build the from the stable boinc_public branch of the BOINC distribution then you can just configure for the build using the included ./configure script. If you are building from the always channging development branch then you will have to first create this script using the _autosetup script, and this requires recent versions of GNU autoconf and automake.

Getting the build started with _autosetup fails with autoconf 2.52 and automake 1.6.3. The easiest thing to do is to just get the latest versions from ftp://ftp.gnu.org/pub and build and install them (they build with `./configure; make; make install`

Compiler: cannot find g++

Red Hat ships two versions of the gcc compiler tools, a version they call gcc 2.96 and gcc 3.0.4 which they call gcc3. Everybody would like to use gcc3, of course. To do so we have found that you need to do the following during the configure and make steps: % setenv CC gcc3 % setenv CXX g++3 % ./configure % make

Another option is to install the latest and greatest version of the entire gcc suite of compilers, or at least gcc and g++. We have done so, using gcc version 3.4.0. Note that for any version of gcc after 3.3 you must also install binutils version 2.13 or later.

Python version problems

Red Hat ships two versions of the python script processor, apparantly because a large number of their installation and system adminstration scripts use Python 1.5, while everybody else these days uses Python 2.2 or better. If you give the command python you are actually getting Python 1.5. You have to say python2 to get the later version.

we tried making /usr/local/bin/python a link to python2 but we were not sure this was the best approach. So we downloaded the latest Python source (version 2.3.4) and built it and that worked fine.

MySQL-python

The python interface to the MySQL database requires the additional DBI module MySQL-python. We downloaded it and installed with python setup.py install and there were no problems

Building static apps

An application program built on Red Hat 7.3 with dynamically loaded libraries may not run on other versions of Linux because of a mis-match in library versions, or because a particular library is not installed on the remote client. So we have built all of our apps static, so that they do not use dynamic libraries. This makes the executables a bit larger, but to compensate we have made sure to strip them of extra debugging information.

To compile the BOINC client and apps static you should set the LDFLAGS environment variable appropriately before you run the ./configure script:

% setenv LDFLAGS -static % ./configure prefix=/usr/local/boinc

An example of stripping an executable is

% strip boinc_3.20_i686-pc-linux-gnu See the strip(1) man pages for a description of what strip does.

    


Please send corrections or suggestions for improvement to
myers@vassar.edu

http:// pirates.vassar.edu /help/boinc-on-redhat.html Last modified: 18 November 2004