Ingres Community Build Page
From Ingres Community Wiki
This page has been created as a single point of contact for all things relating the building the community version of Ingres
To make building the Ingres source as straight forward as possible on as many platforms as possible.
If you manage to build the Ingres source on an platform not mentioned below, please add your achievement to the table. Similarly if you're having trouble with a particular platform, add that too. There may well be someone else feeling your pain!
|CentOS Linux||5.4||x86||10.0.0-2255||Roy Hann||Built and installed successfully||make sure not to have mixed revs of Xerces|
|Mac OS X||10.4 (Tiger)||PowerPC||9.3.0-111||Jay Hankinson||Built and installed successfully||See here|
|Mac OS X||10.5 (Leopard)||x86||9.3.0-111||Jay Hankinson||Built and installed successfully||See here|
|Fedora Linux||Core 8||x86_64||9.3.0.-111||Jay Hankinson||Built and installed sucessfully||SVN revision 22|
|Linux 64bit||RHEL 5 (Tikanga)||x86_64||9.3.0-111||Martin Bowes||Built and installed successfully||See Gotchas but issues resolved in rev 22|
|Ubuntu Linux||7.10 (Gutsy Gibbon)||x86||9.3.0-111||Paul Mason||Built and installed successfully||SVN revision 11|
|Ubuntu Linux||8.04 (Hardy Heron)||x86_64||9.3.0-111||Paul Mason||Built and installed successfully||See here|
|Windows XP||SP3||x86||9.3.0-102||Chen zhen||Built and installed successfully||SVN revision 34|
|Fedora Linux||9 (Sulphur)||x86 i386||9.3.0-100||Chen zhen||Built and installed successfully||SVN revision 34|
|Solaris||9||SPARC||9.1.0-123||Simon Lovell||Built successfully||must use -xarch=v8plus with SunStudio/11|
Problems, Gotchas, Solutions and Workarounds
The jam source can be found at: ftp://ftp.perforce.com/pub/jam/jam-2.5.tar To install, simply copy the tar file to your home directory, extract the files from the tar and execute the 'make' command. This will create ~/jam-2.5/bin.linux/jam.
You then need root privilege to install the new jam command. Eg. (as root) copy ~/jam-2.5/bin.linux/jam to /usr/bin/jam
The Pax build may fail stating 'LINUX is not supported.' To correct this simply edit the Jamfile and replace the LINUXX86 with LINUX.
32bit and 64bit libraries for Xercesc
To build both the 32-bit and 64-bit libraries for Xerces-C you need to do the following:
- obtain and unpack the source for Xerces-C 2.7 (here)
- set XERCESCROOT to the directory you unpacked the source to e.g.
- configure and build the 32-bit libraries first
cd $XERCESCROOT/src/xercesc ./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread -b32 -l"-m32" -z"-m32" make
- copy the libraries to an lp32 directory
mkdir $XERCESCROOT/lib/lp32 cp -p $XERCESCROOT/lib/lib* $XERCESCROOT/lib/lp32
- clean the build environment. If you skip this step it will simply re-link the 32-bit objects.
- configure and build the 64-bit version
./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread -b64 make
The other, perhaps simpler, way to create the 32bit library is to make the $XERCESCROOT/lib/lp32 subdirectory and then to install into it a compiled library set. The compiled library set can be found here The archive for 32-bit binaries is not labelled as 32-bit it is labelled for Red Hat (and the 64-bit one is labelled for Suse).
Simply download the tar file, unpack it and copy its lib area into $XERCESCROOT/lib/lp32.
At time of writing the above links are correct for Xerces-C version 2.7, which is the current version needed to build Ingres. If you need a different version, please check http://xml.apache.org/xercesc.
If /usr/include/asm/bitops.h and its dependant include files are not present then you can copy them from an older Linux release and install them. You will need root privilege for this. The dependant files are: asm/asm-x86_64/bitops.h, asm-i386/bitops.h, linux/config.h
Fixed in revision 22
If you receive errors like ld: cannot find -lgcc_s
Then download the patch: gcc_s.patch
Apply patch as follows:
- cd $ING_SRC/tools/port/shell_unix
- chmod 644 shlibinfo.sh
- cat <path to file>/gcc_s.patch | patch
The patch command should respond with: Hunk #1 succeeded at 617 (offset -9 lines).
ld: skipping incompatible /usr/lib64/
On SUSE Linux Enterprise Server 10 (x86_64) Patch Level 2 the following error occurred when building 32bit libraries:
Building libcompat.1.so Extracting objects ... ld -melf_i386 -shared -o /home/ingres/ingres2006-9.2.0-130-gpl-src/build/lib/lp32/libcompat.1.so *.o -lm -lc -lpthread -ldl -lcrypt -lgcc_s ld: skipping incompatible /usr/lib64/libm.so when searching for -lm ld: skipping incompatible /usr/lib64/libm.a when searching for -lm and so on
In this scenario ld does't seem to respect the -melf_i386 flag. The ld command is part of the binutils package which is at version 2.16 on this system. You can get newer sources at gnu's binutils site, e.g. version 2.17, and use the newly-compiled binary.
To compile and install ld 2.17:
- tar xzvf binutils-2.17.tar.gz
- cd binutils-2.17
- make install
Ensure that ld is in the path
- which ld
should return /usr/local/bin/ld
To continue the Ingres build:
- cd $ING_SRC
- jam &> jam.log
Addendum - hanje04
I've not found a SLES 10 machine to test it on but I suspect the problem is caused by not having the 32bit development packages installed. They don't install by default and are not part of the default (64bit) tools.