Overview of Development Systems for SCO OpenServer

Overview of Development Systems for SCO OpenServer

A number of development environments are available for developing software for SCO OpenServer. This overview can help you to select the most appropriate environment.

Two options for C and C++ compilers are available on SCO OpenServer:

See ``C and C++ compilers'' for a description of these options.

For Java development, SCO provides the Java Development Kit (JDK).

In sorting through the SCO OpenServer development environment options, you should also review:

In the context of this Overview, ``performance'' refers to the effect a compiler has on an application's run-time performance, where smaller generated code size and/or faster application execution time means better performance. Statements made here about one compiler having better performance than another are based on careful observations from the running of industry-standard benchmarks. However, for any particular application, results may vary. If your application is performance-sensitive, you are advised to measure the difference in compilers for your specific program and applications.

SCO publishes information for developers at the SCO Developer Network home page ( You should check this page for updated information, new tricks, links to important news groups, and so forth. Anyone who is developing software for SCO platforms is encouraged to join the SCO Developer Network.

C and C++ compilers

The Legend Development System contains a C compiler and a C++ compiler. Both compilers are standards-conforming, robust, and generate excellent-performing IA-32 machine code. Both come with a standard set of command-line tools including profilers and memory analyzers, and both can be used with the graphical Legend Development System debugger.

Both the C and C++ compilers can operate in two modes, UDK mode or OSR mode. The following sections explain how these modes work.

Two Modes

The UDK and OSR modes exist due to Legend's nature. The SCO OpenServer 6 operating system has had an infusion of UNIX System V Release 5 (SVR5) kernel technology in order to supply modern features such as threads and large file support.

Accordingly, SCO OpenServer 6 can run both SVR5 applications as well as traditional SCO OpenServer 5 applications.

These two kinds of applications are distinct because they make different kinds of system calls to the operating system, they make use of different application programming interfaces (APIs), and they embody different application binary interfaces (ABIs).

Within any one operating system process -- an application a.out-format executable and all the .so dynamic libraries it uses -- every object file must have been compiled in UDK mode or OSR mode. There cannot be any mixing and matching of modes within one process (such mixing would violate the fundamental meaning of what an ABI is).

The C compiler (cc command), the C++ compiler (CC command), and a few other development tools have a -K option to set the mode, with udk and osr being the allowed values.

The defaults depend upon where the compilers and related tools are invoked from:

default is UDK mode; use -Kosr for OSR mode

default is OSR mode; use -Kudk for UDK mode
and so on, for the various tools.

Which Mode to Use?

Here are some guidelines about which mode you should use when building with the SCO OpenServer 6 Development System.

In general, you should use the UDK mode if at all possible; it is the forward-going mode for the SCO OpenServer product line.
You should use UDK mode if:

  • You are writing a new application, or porting an application that has never been on SCO Unix before.

  • Your application needs to use threads (e.g. makes calls to pthread_create()) or large files (e.g. makes calls to fopen64()).

  • Your application is being ported from UnixWare.

  • You would like your application binary to run on UnixWare as well as SCO OpenServer 6.

  • You are writing Java native code (JNI).

  • You are writing a device driver for SCO OpenServer 6.
You should use OSR mode if:

  • Your application needs to link with a third-party library provided on SCO OpenServer 5.

  • Your application needs to link with SCO OpenServer 5 objects or libraries (.o, .a, .so) that you or others created, that for whatever reason you do not want to, or cannot, recompile.

Mode Issues

If you have an existing SCO OpenServer 5 application that you want to modernize with threads or large files or some other SVR5-dependent feature, you must compile it in UDK mode. Because UDK mode features some different APIs from SCO OpenServer 5, it is possible that you will have some porting work and source code modifications to do. These are usually not large or difficult; this subject is discussed further in the Porting Guide.

Occasionally the mode requirements may present a contradiction: for instance, you have an existing SCO OpenServer 5 application program that depends upon and is linked against a third-party library archive. Now you want to modify another part of this program to handle large files. That means you need to use UDK mode, but the presence of the third-party library means you need to use OSR mode. Assuming you cannot get the library vendor to re-build it in UDK mode, what do you do?

In this kind of situation you must split your application program into two processes. One process makes the calls to the third-party library and is compiled in OSR mode. The other process makes the calls to do the large file I/O and is compiled in UDK mode. Then you must use some sort of inter-process mechanism -- sockets, pipes, IPC, etc. -- to communicate between the two processes.

Java Development Kit (JDK)

The Java 2 Standard Edition Software Development Kit is pre-installed on all Legend systems, in the directory /usr/java/. Documentation describing its use may be found in the Release Notes at /usr/java/ReleaseNotes.html.

If your application is 100% Java and already exists on another platform, you may not need to modify or port it for Legend.

Other languages

Development tools for other languages such as Fortran, COBOL, and Ada, as well as fourth-generation languages associated with databases and scripting languages, are provided by third-party vendors for SCO platforms. The GNU g77 Fortran compiler is provided as part of the GNU Development Tools, included with SCO OpenServer. Also, there may be Open Source solutions that you can use, such as the GNU-based GNAT Ada 95 compiler.

Older Platforms

There are some older SCO operating systems that pre-date SCO OpenServer, Open UNIX 8, and UnixWare 7, such as SCO UnixWare 2, SCO UNIX, and XENIX. These older operating systems are no longer supported by SCO, and we recommend that you upgrade your platform and your development tools to currently supported SCO products, if possible.

© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 03 June 2005