Why is a recent (>4.0) version of GCC required?
Bugle is driven by a number of tables that list all the information about the various types and functions in OpenGL. To capture this information, it is necessary to parse the OpenGL header files. It would be very difficult to write a parser to do this robustly, but GCC already knows how to do this. Unfortunately, the ability to extract a parse tree from GCC (the -fdump-translation-unit option) was only added sometime after 3.0, and is also broken in 4.0 (fixed in 4.1). To avoid namespace pollution, bugle passes -fvisibility=hidden to GCC, which is only supported since GCC 4. If you need to build with GCC 3.x, you can try removing this option, but doing so is unsupported.