freeglut 3.0.0-1.mp for MinGW This package contains freeglut import libraries, headers, and Windows DLLs. These allow 32 and 64 bit GLUT applications to be compiled on Windows using MinGW. Both static and shared versions of the library are included. For more information on freeglut, visit http://freeglut.sourceforge.net/. Installation Create a folder on your PC which is readable by all users, for example “C:\Program Files\Common Files\MinGW\freeglut\” on a typical Windows system. Copy the “lib\” and “include\” folders from this zip archive to that location. The appropriate freeglut DLL can either be placed in the same folder as your application, or can be installed in a system-wide folder which appears in your %PATH% environment variable. Be careful not to mix the 32 bit DLL up with the 64 bit DLL, as they are not interchangeable. Compiling 32 bit Applications If you want your application to be compatible with GLUT, you should “#include ”. If you want to use freeglut specific extensions, you should “#include ” instead. Given a source file “test.c”, which you want to compile to an application “test.exe” dynamically linking to the DLL, you can compile and link it with the following commands (replacing the include and lib paths with the ones you created above if necessary): gcc -c -o test.o test.c -I"C:\Program Files\Common Files\MinGW\freeglut\include" gcc -o test.exe test.o -L"C:\Program Files\Common Files\MinGW\freeglut\lib" -lfreeglut -lopengl32 -Wl,--subsystem,windows Don’t forget to either include the freeglut DLL when distributing applications, or provide your users with some method of obtaining it if they don’t already have it! Compiling 64 bit Applications Building 64 bit applications is almost identical to building 32 bit applications. The only difference is that you should change the library path on the command line to point to the x64 directory: gcc -c -o test.o test.c -I"C:\Program Files\Common Files\MinGW\freeglut\include" gcc -o test.exe test.o -L"C:\Program Files\Common Files\MinGW\freeglut\lib\x64" -lfreeglut -lopengl32 -Wl,--subsystem,windows Static Linking To statically link the freeglut library into your application, it’s necessary to define “FREEGLUT_STATIC” when compiling the object files. It’s also necessary to link the static version of the freeglut library, along with the GDI and Windows multimedia libraries which freeglut depends upon: gcc -c -o test.o test.c -D FREEGLUT_STATIC -I"C:\Program Files\Common Files\MinGW\freeglut\include" gcc -o test.exe test.o -L"C:\Program Files\Common Files\MinGW\freeglut\lib" -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -Wl,--subsystem,windows The “-Wl,--subsystem,windows” is needed in each case so that the application builds as a Windows GUI application rather than a console application. If you are using GLU functions you should also include “-lglu32” on the command line. When statically linking a 64 bit build, you should change the library path as detailed under the “Compiling 64 bit Applications” section. Full Tutorial Please visit http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/ for a complete guide on using GLUT and freeglut with MinGW. Cross-Compilation I’ve not covered the setup of freeglut for use in cross-compilation, i.e. when building Windows freeglut applications using a Linux system. Setting freeglut up with MinGW on other operating systems can be done following the instructions above, except that the paths will be different. Problems? If you have problems using this package (compiler / linker errors etc.), please check that you have followed all of the steps in this readme file correctly. Almost all of the problems which are reported with these packages are due to missing a step or not doing it correctly, for example trying to build a 32 bit app against the 64 bit import library. If you have followed all of the steps correctly but your application still fails to build, try building a very simple but functional program (the example at http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/ is ideal). A lot of people try to build very complex applications after installing these packages, and often the error is with the application code or other library dependencies rather than freeglut. If you still can’t get it working after trying to compile a simple application, then please get in touch via http://www.transmissionzero.co.uk/contact/, providing as much detail as you can. Please don’t complain to the freeglut guys unless you’re sure it’s a freeglut bug, and have reproduced the issue after compiling freeglut from the latest SVN version—if that’s still the case, I’m sure they would appreciate a bug report or a patch. Changelog 2015-03-15: Release 3.0.0-1.mp • First 3.0.0 MinGW release. I’ve built the package using MinGW, and the only change I’ve made is to the DLL version resource—I’ve changed the description so that my MinGW and MSVC builds are distinguishable from each other (and other builds) using Windows Explorer. Transmission Zero 2015-03-15 http://www.transmissionzero.co.uk/