Q: How can I use !OpenGL Performer with VR Juggler on Linux?

What steps do I have to take to use !OpenGL Performer and VR Juggler on Linux? Why is it so complicated?

A: Use the GCC 3 versions of VR Juggler and !OpenGL Performer.

Summary

!OpenGL Performer only works with the gcc2.95 distribution or the gcc3.0 distribution of the gnu compiler collection (gcc). It will not work with gcc2.96 which is the default compiler for Red Hat 7.x. If you are running Red Hat 7.x you will need to install a gcc3.0 distribution (one is available from Red Hat).

!OpenGL Performer for Linux has two distributions. One for gcc2.95 and the other for gcc3.0. The Performer distribution for gcc2.95 will not work with gcc3.0 and correspondingly the Performer distribution for gcc3.0 will not work with gcc2.95.

We highly suggest that if your Linux distribution has support for a gcc3.x distribution, you should use that version of the compiler for developing Performer applications with VR Juggler.

Details

The problems with Performer, VR Juggler, and Linux date back to the release of Red Hat Linux 7.0. This version shipped with GCC 2.96, a version that produced C++ code that was not fully compatible with GCC 2.95 (the version used on Red Hat 6.x). Between these two versions, most C++ binary code was interoperable, but not all. In particular, the use of the dynamic_cast<> construct caused an immediate crash when an application was linked with the Performer libraries—even if the application did not make a single Performer function call or include any Performer headers.

The cause of these problems was the change in the application binary interface (ABI) for C++. The C++ ABI changed between versions 2.91, 2.95, 2.96, 2.97, and 3.0. GCC 3.0 and 3.1 are fully binary compatible—at least with respect to VR Juggler and Performer.

Until June 2002, all versions of Performer for Linux were built for use on Red Hat Linux 6.x using GCC 2.95. !OpenGL Performer 2.5.1 is the first version released for Linux that is built with GCC 3. GCC 3.1 (or 3.2—see below) will be the compiler used on Red Hat 8.0, so it will not be long before the use of GCC 3.x replaces GCC 2.9x in widespread use.

There are further complications, however. GCC 3.2 has C++ ABI changes relative to versions 3.0 and 3.1. (GCC 3.2 was released August 14, 2002, and it is simply GCC 3.1.1 with bug fixes for the 3.0/3.1 ABI.) Initial testing has shown that the GCC 3.0 version of Performer can be used with a GCC 3.2 build of VR Juggler 1.1. This testing was not at all rigorous, but it may be that the ABI differences between 3.0/3.1 and 3.2 are not of the show-stopping variety, as seen between 2.95 and 3.0.

Even so, more bugs have been found in the GCC 3.2 C++ ABI. At this time, the bugs have not been fixed in the GCC 3.3 development code. Discussions on the mailing list suggest that a compiler flag may be added to GCC 3.3 to allow backwards compatibility with the 3.2 ABI. As of late Semptember 2002, the GCC steering committee has not discussed the issue, so no decisions have been made.

For information on the decisions made regarding GCC 3.1 and 3.2, refer the the attached file. It is likely that it will be the compiler used by most major operating systems released in Q3 and Q4 2002 (Red Hat 8.0, !SuSE, !FreeBSD 5.0, etc.). If this does occur, then it seems reasonable to expect that SGI will release a build of Performer compiled with GCC 3.2, and all will be well.

Note for Red Hat 7.3 users

Red Hat has made RPMs of GCC 3.1 available for Red Hat Linux 7.3 via up2date. The version number on the C++ library (/usr/lib/libstdc++.so.3) has been increased to 4, thus changing the name of the library binary to libstdc++.so.4. This name change causes a runtime linker error with the Performer libraries because they are linked against libstdc++.so.3. Making a symlink to libstdc++.so.4 might fix the error, but this has not been tested successfully yet.

Note for Red Hat 8.0 users

Red Hat Linux 8.0 uses GCC 3.2 as the system compiler. It is not clear yet if !OpenGL Performer 2.5.x compiled with GCC 3.0 will work on Red Hat 8.0. Initial testing (using build 3123 of the nVidia drivers) causes the machine to freeze as soon as a Performer window is opened.

Back to: LiveFaq

Attachments