posted by Tony Bourke on Tue 16th Dec 2003 00:42 UTC

"UnixWare, Page 3"
Compiling Software

Compiling software was probably the most frustrating part of this review. To sum it up, it's a major hassle to get many applications compiled, and some I couldn't get compiled at all. This is important, given the lack of what's available for the UnixWare platform on a pre-compiled and enterprise level, you're going to need to do a lot of compiling. If you run UnixWare, you're going to need to know your way around a Makefile, and an overall higher level of compiling savvy than you would on other systems.

As I said before, the basic UnixWare installation includes a (non GCC) C compiler, but does not include a C++ compiler. That's something to keep in mind, as many applications, such as MySQL, have C++ code, so you'll need some type of C++ compiler in order to compile them. SCO does offer a C++ compiler as part of the UnixWare Development Kit, which lists for $599. I didn't have an evaluation license (or the $600) so I decided to use a pre-compiled GCC 2.95.2 from the skunkware site to compile applications that required a C++ compiler.

For the first application to compile under UnixWare, I chose tcsh. For just the virtue of the greater productivity it affords me, I consider tcsh (or bash) a necessity, so I downloaded the source from a site listed on (I tried using the tcsh versions posted on SCO's skunkware site, but they all exhibited a strange up-arrow last-command problem, to the point of being unusable.)

It took me a bit to get it to compile. The ./configure script failed to discover what kind of OS it is (which happens with a few other auto-configure scripts).


loading cache ./config.cache
checking host system type... i686-unknown-sysv5UnixWare7.1.3
checking cached host tuple... ok
configure: error: Tcsh can't guess the configuration file name
for 'i686-unknown-sysv5UnixWare7.1.3' systems.
Check tcsh's 'Ported' file for manual configuration instructions.

After experimenting with a few of the config.h files and adjusting Makefile, I was able to get tcsh to compile, and it did not exhibit the strange behavior of the skunkware tcsh.

I was able to compile Apache, OpenSSL 0.9.7c, OpenSSH 3.7.1p2, and a few others without much trouble. For the most part I was able to get them to compile with both the built-in C compiler, and the GCC 2.95.2 package I got from the skunkware site.

However, I could not get mysql-4.0.16 to compile at all with GCC despite hours of trying. I also could not get any version of GCC 3 to compile with either the older GCC or the built-in C compiler. (While the GCC team has contemplated doing so, they haven't yet removed support for SCO products).

Linux LKP

The Linux Kernel Personality (Linux LKP) was to me the most impressive of UnixWare's capabilities. The LKP is a separate environment under UnixWare running a version of what looks like Caldera's OpenLinux, and allows UnixWare to run Linux compiled binaries unmodified.

Effectively, the LKP is like running Linux in a separate VMWare-style environment. It runs as a kernel module (there doesn't seem to be an actual Linux Kernel running, rather the module accepts Linux system calls), and shares space on the root file system. Even to uname it looks like a Linux system:

# uname -a Linux 2.4.13 #1 Thu Oct 31 02:32:23 EST 2002 i686 unknown

The Linux file system is accessible to UnixWare via a /linux mount. To interact with the Linux image, all you need to do is type in "linux", or run one of the Linux shells from UnixWare, such as /linux/bin/tcsh. The LKP is chroot'ed to the /linux file system, and the UnixWare file system is available to the LKP environment by a /unixware mount.

The Linux kernel version number piqued my interest, because of the recent kernel vulnerability responsible for the compromise of some Debian project servers. I'm not sure if the same kernel exploit would work in the LKP, but it'd be an interesting test.

The LKP works so well that the KDE environment runs entirely from this realm (CDE runs native to UnixWare). The KDE/Linux desktop seemed significantly slower than the CDE counterpart, so much so that entering text in a window often took a second or two to echo back, although that could easily have more to do with my poor Cirrus 2MB video card than slowness in the emulation. However, the CDE UnixWare-native version was fairly snappy and responsive. Unfortunately, I did not have a faster video card to test with the system.

Earlier I mentioned have problems compiling software under UnixWare. Oddly enough, this was not the case in the LKP. I was able to compile Apache 1.3.29, MySQL 4.0.16, GCC 3.3.2, OpenSSH 3.7.1p2, OpenSSL 0.9.7c, and a number of other applications without any trouble or mucking around in the Makefile.

I ran some tests to see if the LKP imposed any performance penalty as opposed to running natively in UnixWare, and the results were pretty surprising.

To test, I used OpenSSL 0.9.7c's openssl speed function, invoking the command with openssl speed rsa dsa. To compile, I used the built-in C compiler for the UnixWare version and GCC 2.95.2 for the LKP version.

benchmark results

The results for both were virtually identical. For this test at least, there was no apparent performance penalty for running applications in the LKP versus natively.

Also included with UnixWare is the OKP (OpenServer Kernel Personality). OpenServer is SCO's other Unix product, and UnixWare offers an environment similar to the LKP to run OpenServer-native binaries unmodified. Not being familiar with OpenServer, I didn't evaluate that environment.

Table of contents
  1. "UnixWare, Page 1"
  2. "UnixWare, Page 2"
  3. "UnixWare, Page 3"
  4. "UnixWare, Page 4"
  5. "UnixWare, Page 5"
e p (0)    68 Comment(s)

Technology White Papers

See More