Red Hat Bugzilla – Bug 97638
Undefined References when compiling against libglut.so.3
Last modified: 2007-04-18 12:54:53 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3.1) Gecko/20030530
Description of problem:
When compiling a glut application, the following errors occur:
/usr/lib/libglut.so.3: undefined reference to `glXBindChannelToWindowSGIX'
/usr/lib/libglut.so.3: undefined reference to `glXQueryChannelDeltasSGIX'
/usr/lib/libglut.so.3: undefined reference to `glXChannelRectSyncSGIX'
/usr/lib/libglut.so.3: undefined reference to `glXChannelRectSGIX'
/usr/lib/libglut.so.3: undefined reference to `glXQueryChannelRectSGIX'
This is using glut-3.7-14 from RawHide with RH9.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Compile a program which uses glut.
This GLUT flaw occurs when using Nvidia's libGL and some other OpenGL
implementations which do not implement the above listed SGI extensions.
The OpenGL implementation included with XFree86 (Mesa) does implement
these extensions, however due to a flaw in the way glut is built as well
as a flaw in it's implementation, it requires the installed libGL
implementation to contain all of the functionality of the OpenGL
implementation glut was compiled with.
As such, when the libGL is replaced with a 3rd party libGL which does not
implement these extensions, GLUT applications can not be compiled any longer.
The author's license on the GLUT library however, does not permit
modification and redistribution by third parties, which unfortunately means
that Red Hat and others can't legally fix or modify the GLUT source code to
get rid of this problem and then redistribute the modified library.
This poses a problem for Red Hat customers and users whom rely upon the
functionality of GLUT, but whom use 3rd party OpenGL implementations such
as the Nvidia libGL, which doesn't implement the SGI extensions that cause
this problem to arise. Also, since it is _not_ a bug in the 3rd party
libGL, there is nothing that vendors such as Nvidia can do about this issue
The GLUT license problem was not known of until recently, which is why glut
has remained in Red Hat Linux for several releases, however the problem
reported in this bug report did not surface until recently.
Due to the GLUT licensing problem, we have a list of solutions which
customers and users can use for the time being to work around this issue.
- After installing your 3rd party libGL implementation, such as the one which
comes with Nvidia's video drivers, download the glut src.rpm package from
the Red Hat ftp site, or installation media, and rebuild it against
the installed 3rd party libGL. After rebuilding, you can uninstall glut
with "rpm -e --force glut glut-devel", and then install the newly built glut
and glut-devel packages. User feedback provided this workaround, and it's
been verified by various other individuals since then as well. glut and
glut-devel should still work fine with Mesa as well should they ever
replace the 3rd party libGL in the future, however the SGI extensions will
then be disabled. This shouldn't be a problem for anyone generally.
- Another option is to compile your software against the Red Hat supplied
Mesa libGL and then run the applications on other systems which may have
any libGL installed. This hasn't been tested, but is believed that it should
After being alerted to this GLUT flaw, and discovering the license issue,
we have investigated the GLUT issue deeper. It turns out that the author
of GLUT no longer maintains GLUT as he considers it to be feature complete
and a finished product. He does not wish for anyone else to modify GLUT,
extend it, fix bugs, or add features to it. We respect the author's copyright
and his wishes, however since this poses a real world problem to Red Hat Linux
users and customers, we have decided that we will remove the glut package
from future Red Hat Linux releases and seek a better solution.
We've discovered an open source clone of GLUT named "freeglut", which can be
found at http://freeglut.sourceforge.net which is MIT licensed and was
designed and implemented from the ground up to clone GLUT. freeglut is a
100% glut replacement, and it will replace glut in all future Red Hat OS
products. It also provides some extensions to the GLUT API, which are only
available by linking to libfreeglut (instead of libglut). Linking to libglut
provides a 100% compatible GLUT implementation barring any bugs that arise.
We have included freeglut in rawhide experimentally for the time being
alongside glut. The freeglut project will be making a major new release
soon, and at that time I will be updating our freeglut package to the new
official version and removing glut from the distribution. Once this has
occured, GLUT users are encouraged to both test existing binary GLUT
applications against our freeglut package for binary compatibility, and
to compile test any GLUT applications they use as well to test build time
If any bugs are found in freeglut, they should be reported directly
to the freeglut project on sourceforge so that the freeglut developers can
investigate and fix any issues as soon as possible. Users can file freeglut
bug reports upstream at: http://freeglut.sourceforge.net/fg/index.php?id=393
After reporting a freeglut bug upstream, if you would also like Red Hat to track
the upstream bug report and backport any fixes that the freeglut developers
make, you may also file a bug report in Red Hat bugzilla with a URL to the
upstream freeglut bug report. Once the issue is fixed upstream, Red Hat
can investigate the possibility of backporting the fix for future builds.
We apologize for any inconveniences caused to users due to the non-free
license that GLUT is licensed under, and we hope to see the open source
freeglut meet everyone's needs in our future operating systems.
Closing bug as RAWHIDE, as the above mentioned workaround, while slightly
inconvenient, should suffice in lieu of an better solution for existing
supported OS releases that ship with GLUT, and our long term solution is
to ship freeglut, which is currently in rawhide.