The two versions of GNU C that are available were ported to OS/2 with different goals and philosophies in mind and therefore have different characteristics. However, both systems include a fairly complete C library and can be used to compile useful programs, although their support of Unix-specific semantics differs. Furthermore, both systems are being actively developed and are constantly improving.
The goal of GCC/2 is to create a pure, freely redistributable OS/2 2.x development environment. It is based on GNU C 2.5.4, supports C, C++, and Objective C, and can create PM programs. It produces "native" 32 bit .OBJ files that are linked with OS/2's LINK386.EXE, and can be linked together with .OBJ files produced by IBM C-Set++ and other compatible compilers. The mailing list os2gcc@netcom.com exists for discussion of this port; send mail to os2gcc-request@netcom.com for subscription information.
emx/gcc 0.9a, based on the GNU compiler 2.x.x, supports C, C++, and Objective C and can create PM programs. emx's goal is to make porting Unix programs easier by emulating Unix semantics as closely as possible. It produces programs that can run under OS/2 using EMX.DLL, it produces programs that can run under OS/2 without any DLL requirements (linked with OS/2's LINK386), and it can produce MS-DOS 32-bit executables (emx.exe DOS extender required for MS-DOS executables). emx/gcc uses standard Unix development tools like ld and nm, and fully supports Unix-isms like select() and fork(). A version of gdb exists that can debug emx/gcc programs. An emx-related mailing list exists; send mail to LISTSERV@eb.ele.tue.nl with a message body of "help" for subscription information.