[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Machines

Below is a list of machines that people have attempted to compile GNUstep on. GNUstep compiles with little or no trouble on many of the more popular operating systems. Some machines marked with Unstable may have some trouble or may not work at all.

1.1 Darwin 6.x/PowerPC  
1.2 Debian/DEC-Alpha  
1.3 FreeBSD 4.x  
1.4 FreeBSD 3.x  
1.5 FreeBSD 2.x (Unstable!)  
1.6 GNU-Linux/PowerPC (LinuxPPC, Yellowdog)  
1.7 Irix 6.5/MIPS  
1.8 MkLinux/PowerPC (Obsolete)  
1.9 RedHat/Intel  
1.10 NetBSD  
1.11 Netwinder (Unstable!)  
1.12 OpenBSD 3.x (Unstable!)  
1.13 OSF Alpha (Unstable!)  
1.14 Slackware/Intel  
1.15 Solaris 2.5.1/Sparc (Obsolete)  
1.16 Solaris 2.[67]/Sparc  
1.17 Solaris 2.7/Intel  
1.18 Suse 6.x/Intel  
1.19 Suse/Intel  
1.20 Suse 7.x/PPC  
1.21 Unixware-2.1.3/Intel  
1.22 Windows with CYGWIN (Unstable!)  
1.23 Windows with MinGW (Unstable! As always...)  

A recommended compiler is listed for each machine, if known. You should try to use the recommended compiler for compiling GNUstep, as GNUstep is quite complex and tends provoke a lot of errors in some compilers. Even versions newer than the listed compiler may not work, so don't just get the latest version of a compiler expecting it to be better than previous versions.

Compiler notes: If a recommended compiler is not listed, take note of the following information before choosing the compiler you use.

`egcs or gcc < 2.95'
Probably will work, but few people use these now.
`gcc 2.95.x'
Probably the oldest compiler that GNUstep is regularly tested with.
`gcc 2.96'
Not an official gcc release. Some versions (Redhat, Mandrake) have problems that prevent GNUstep from being compiled correctly and cause mysterious errors.
`gcc 3.0.x'
A fairly good compiler. Recommended.
`gcc 3.1'
Several bugs where introduced in the version. It's probably better to avoid this one, although it might work fine.
`gcc 3.2.x'
Pretty good. Recommended.
`gcc 3.3.x'
Recommended. Fixes some bugs relating to protocols as well as other improvements.

If you have compiled GNUstep on a specific machine, please send information about what you needed and any special instructions needed to GNUstep bug-gnustep@gnu.org.

If your having mysterious trouble with a machine, try compiling GNUstep without optimization. Particularly in the newer GCC compilers, optimization can break some code. The easiest way to do this is when configuring, `CFLAGS="" ./configure'. Or when building, `make OPTFLAG=""'.

Also if you manually upgraded gcc and/or make, we recommend reading the documentation at http://www.LinuxFromScratch.org for tips on compiling and installing gcc and make. If you had GNUstep previously installed, make sure you completely remove all of it, including installed init scripts.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Darwin 6.x/PowerPC

`Recommended compiler'
gcc 3.2.2

Default compiler has some odd memory(?) related problems. Use the GNU runtime. Download the gcc compiler and configure it with --enable-threads=posix. You don't need binutils or anything else.

Optional: Usually the installed compiler will produce object files for the NeXT runtime if you don't say gcc -fgnu-runtime. To change this behaviour, edit src-dir/gcc/config/darwin.h: You have to change the word #define in line 73 to #undef. Then the runtime default is gnu. When bootstrapping the compiler a nice working objective C gnu-runtime library (which is a little bit faster than Apple's runtime) will be compiled and installed when make install. To use it, there is one (important) thing left: After installing the compiler, you have to go to install-dir/lib and produce the following dynamic link:

 
ln -s libobjc.a libobjc.dylib
This might seem senseless, but it forces the linker to use this library instead of the NeXT-runtime!

`Extra libs needed'
Use libffi (not ffcall). This should be enabled by default in gnustep-base so you don't have to type --enable-libffi. Also you need the dlcompat library (from www.opendarwin.org) to load bundles (like the backend bundle).

`Special Instructions'

Make sure to configure gnustep-make with ./configure --with-library-combo=gnu-gnu-gnu if you want to use all the GNUstep libraries.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Debian/DEC-Alpha

`Recommended compiler'
Unknown

`Extra libs needed'
Unknown

`Special Instructions'
Unknown


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 FreeBSD 4.x

`Recommended compiler'

`Extra libs needed'
Unknown

`Special Instructions'
If you're using zsh, some shell variables may not be set correctly when executing GNUstep.sh. Try turing on SH_WORD_SPLIT (e.g. 'zsh --sh-word-split', 'zsh -o shwordsplit', 'zsh -y' or by setting 'setopt SH_WORD_SPLIT' in one of zsh's startup files.)

For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES

For libxml2 2.4.24, make WITHOUT_PYTHON=YES


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 FreeBSD 3.x

Compiles "out of the box" on FreeBSD 3.4.

`Recommended compiler'
gcc 2.95.2

`Extra libs needed'
Unknown

`Special Instructions'

You need to use gmake not make to compile the GNUstep packages. A special port of gdb can be used with the Objective-C patches from ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz

The best compiler for GNUstep is the latest release of the GNU Compiler Collection (GCC). You can find it at http://egcs.cygnus.com/.

If you want to use the native POSIX threads support from `libc_r' pass --enable-threads=posix to configure. This is the recommended option as this is the FreeBSD threads package that gives the best results --with others you may be unable to run some examples like `diningPhilosophers'.

The whole compilation process can fail if you have another threads library installed so watch out for installed packages like `pth' and such. Besides the support for libc_r, GNUstep will also look for `pth' and `pcthreads', so if you have installed them and they aren't detected prepare to write a nice bug report.

This can be done more much easily by using the port version. Just cd to `/usr/ports/lang/egcs' and do a "make WANT_THREADS=yes install". Easy.

If configure cannot find tiff.h or the tiff library and you have it installed in a non-standard place (even `/usr/local'), you may need to pass these flags to configure: CFLAGS="-I/usr/local/include" and LDFLAGS="-L/usr/local/lib".


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 FreeBSD 2.x (Unstable!)

`Recommended compiler'
gcc 2.8.x

`Extra libs needed'
Unknown

`Special Instructions'
Only static libraries work on this system. Use /stand/sysinstall to install these packages if you have not already done so:

 
gmake           (GNU make)
gcc 2.8.x

Seems to compile ok, but some tests crash. Possibly due to a performace 'hack' in base. Might be a good idea to upgrade to FreeBSD 3.x. You need to use gmake not make to compile the GNUstep packages.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6 GNU-Linux/PowerPC (LinuxPPC, Yellowdog)

`Recommended compiler'
Standard

`Extra libs needed'
Standard (ffcall or libffi)

`Special Instructions'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.7 Irix 6.5/MIPS

`Recommended compiler'
gcc 3.2.1

To use threads, it's necessary to bootstrap a compiler yourself: configure with --enable-threads=posix, that will work as long as you link EVERY objective C executable with -lpthread, no matter what warnings the irix linker produces!

`Extra libs needed'
Unknown

`Special Instructions'
If you cannot link the library because of the very low default limit (20480) for the command line length, then you should either use systune ncargs to increase the value (maximum is 262144) or link the library by hand. No libffi-support: Use ffcall


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.8 MkLinux/PowerPC (Obsolete)

This configuration is no longer being tested, but it may still work.

`Recommended compiler'
egcs-2.90.25 980302 (egcs-1.0.2 prerelease) which comes standard with DR 3.

`Extra libs needed'
None.

`Special Instructions'
Comes with a good version of gcc. Seems to compile and install ok, althouth DR3 has an old version of glibc, which requires some workarounds which should be taken care of in the configuration. Not completely tested, so some aspects, particular object invocations and DO may not work properly.

If you want threads, you'll probably have to get the latest gcc compiler and glibc library (which has the threads library) and install both.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.9 RedHat/Intel

`Recommended compiler'
Standard

`Extra libs needed'
Standard (ffcall or libffi)

`Special Instructions'
None


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.10 NetBSD

`Recommended compiler'
Unknown

`Extra libs needed'
libiconv

`Special Instructions'
See the README.NetBSD file located in the gnustep-make package.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.11 Netwinder (Unstable!)

`Recommended compiler'
Build #12 of the system.

`Extra libs needed'
Unknown

`Special Instructions'
See http://www.netwinder.org/~patrix


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.12 OpenBSD 3.x (Unstable!)

`Recommended compiler'
Unknown

`Extra libs needed'
Unknown

`Special Instructions'
Try reading the README.NetBSD which might work the same on OpenBSD.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13 OSF Alpha (Unstable!)

Information is for Version 3.2C

`Recommended compiler'
egcs-1.1.1/1.1.2, gcc-2.95

`Extra libs needed'
Unknown

`Special Instructions'
Can only compile with static libraries. Compiler may fail when linking executables (e.g. gdnc). Standard ranlib and ar programs are to feable to create libraries. Should use GNU binutils versions. Linker sometimes fails to find symbols, in which case you may need to link with a library twice. For instance, add an extra -lgnustep-gui in ADDTIONAL_TOOL_LIBS in the GNUmakefile(.preamble).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.14 Slackware/Intel

`Recommended compiler'
Unknown.

`Extra libs needed'
Unknown.

`Special Instructions'
Unknown.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.15 Solaris 2.5.1/Sparc (Obsolete)

This configuration is no longer being tested, but it may still work.

`Recommended compiler'
Unknown

`Extra libs needed'
tiff, Don't use the one in /usr/openwin

`Special Instructions'
See the Solaris 2.6 section for more instructions.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.16 Solaris 2.[67]/Sparc

`Recommended compiler'
gcc 3.2.1 gcc 2.95.3. Version 2.95.2 has several bugs that GNUstep tickles. gcc 3.04. Not 3.1 - does not compile parts of GNUstep.

`Extra libs needed'
tiff, Don't use the one in /usr/openwin

`Special Instructions'
No libffi-support unless you use the patch http://gcc.gnu.org/ml/java-patches/2002-q3/msg00036.html (not particularly recommended).

Using a POSIX shell (zsh or bash, which should come with Solaris) is highly recommended. In fact, some functions, such as compiling frameworks, will not work without it.

Some people have reported problems when using binutils assembler and linker. Using the native Solaris assmebler and linker should work fine.

Older Instructions: If you are using threads, make sure the Objective-C runtime (libobjc that comes with gcc) is compiled with threads enabled (This is true by default) AND that it is compiled with the _REENTRANT flag defined (This does not seem to be true by default). Or use the gnustep-objc package. Also make sure THREADS is set to 'posix' not 'solaris'.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.17 Solaris 2.7/Intel

`Recommended compiler'
Unknown.

`Extra libs needed'
Unknown

`Special Instructions'
Make sure there are no -g compiler flags (i.e. compiling with debug=yes might be a problem). Unsure of correct bundle flags - You might need to use the alternate flags listed in target.make, line 989. Also, configuring gnustep-make with `--disable-backend-bundle' might be necessary if you can't get bundles to work. You will probable get a lot of text relocation warnings, which probably can be ignored. See the other Solaris instructions above for more information.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.18 Suse 6.x/Intel

GNUstep has been tested on version 6.2-6.4 of Suse

`Recommended compiler'
Standard

`Extra libs needed'
None

`Special Instructions'
It seems that there is a problem with the default kernel build distributed with Suse which means that the socket binding used by gdnc doesn't work. If you recompile the kernel then it starts working.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.19 Suse/Intel

GNUstep has been tested on version 7.0, 8.0, 8.1, and 8.2 of Suse

`Recommended compiler'
Standard. gcc2.95.x, gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster. Compile with --threads-enabled (non-standard).

`Extra libs needed'
None

`Special Instructions'
None.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.20 Suse 7.x/PPC

GNUstep has been tested on version 7.0 of Suse

`Recommended compiler'
Standard. gcc2.95.x, gcc3.0.x and gc3.1 work, but 2.95 is faster. Compile with --threads-enabled (non-standard).

`Extra libs needed'
None

`Special Instructions'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.21 Unixware-2.1.3/Intel

`Recommended compiler'
Unknown

`Extra libs needed'
Unknown

Special Instructions for GNUstep installation on Unixware 2.1 systems

1
Tune the kernel to increase the argument space so that we can pass long command-line argument strings to processes (which the makefiles do) (/etc/conf/bin/idtune ARG_MAX 102400)

2
Install raft of the latest GNU software

 
gzip            (you need this to unpack other stuff)
make            (to build everything)
m4              (for autoconf etc)
autoconf        (if you need to change anything)
bison
flex
binutils        (required by gcc if you want to debug)
gcc-2.8.1
                (configure --with-gnu-as --with-gnu-ld --with-stabs)
                NB. gcc-2.8.1 needs a fix to __do_global_dtors_aux()
                in crtstuff.c on Unixware 2.1.3
                (and possibly other unixware versions)
                The fix is already in recent versions of egcs.

 
==================================
static void
__do_global_dtors_aux ()
{
  static func_ptr *p = __DTOR_LIST__ + 1;
  static int completed = 0;

  if (completed)
    return;

  while (*p)
    {
      p++;
      (*(p-1)) ();
    }

#ifdef EH_FRAME_SECTION_ASM_OP
  __deregister_frame_info (__EH_FRAME_BEGIN__);
#endif
  completed = 1;
}
======================================

3
Having got gcc working - it's probably a good idea to rebuild all your GNU software using it!

4
Build gstep as normal.

5
The SIOCGIFCONF ioctl sometimes doesn't work on unixware after applying some of the OS patches.

So I have added a '-a' flag to gdomap to give it the name of a file containing IP address and netmask information for the network interfaces on the system.

You need to set up a file (I suggest '/etc/gdomap_addresses') containing the information for your machine and modify your system startup files in /etc/rc?.d to run gdomap, telling it to use that file.

eg. If your machine has an IP address of '193.111.111.2' and is on a class-C network, your /etc/gdomap_addresses file would contain the line

 
193.111.111.2 255.255.255.0

and your startup file would contain the lines

 
. /usr/local/GNUstep/Library/Makefiles/GNUstep.sh
gdomap -a /etc/gdomap_addresses

If you don't set gdomap up correctly, Distributed Objects will not work.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.22 Windows with CYGWIN (Unstable!)

`Recommended compiler'
gcc 2.95.3 (Cygwin release 1.1.8) or later

`Extra libs needed'
Objective-C library DLL (ftp://ftp.gnustep.org/pub/gnustep/libs) for shared libs. It's a good idea to remove the libobjc.a that comes with gcc (gcc -v for location) so that it isn't accidentally found. For ffcall, you should get version 1.8b or above (the earlier ones don't compile). There are still some problems with structure passing, but that is generally not supportred on any architecture. libffi not supported.

`Special Instructions'
On later versions of Cygwin you may be required to include the win32api directory in CPPFLAGS when configuring:

 
CPPFLAGS=-I/usr/include/win32api ./configure

Make sure you have good shared libraries for everthing. Sometimes a bad shared library (like libtiff) will cause odd and untraceable problems. See `README.Cygwin' for information on compiling.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.23 Windows with MinGW (Unstable! As always...)

`Recommended compiler'
See below.

`Extra libs needed'
See below.

`Special Instructions'
See the `README.MinGW' file located in the gnustep-make Documentation directory for instructions. Windows NT/2000/XP only. Win98 machines and earlier are very buggy and are not supported. Native GUI backend is alpha version.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by root on February, 16 2004 using texi2html