WindowsにMinGWをインストールしてGCCでGLUT(freeglut)を使ってみたのでその記録をメモしておきます。
BorlandのBCCを使ってもできるようですが、今回はGCCを使いたかったのでGCCを使う場合についてのメモです。
インストール手順
MSYS2からMinGWをインストールし、MinGW+MSYS2の環境を構築します。Cygwinをインストールしても一発でできるようです。
MinGWはWindows用のGNUのツールチェイン群で、MSYS2はCygwinからフォークされたPOSIX互換レイヤーのようです[1]日記/2017/10/09/MSYS2,MinGW64,Cygwinの違い – Glamenv-Septzen.net
https://www.glamenv-septzen.net/view/1422。MinGWで作成したexeは単体で実行できる形式にできますが、MSYS2やCygwinで作成したexeはmsys-2.0.dll
に依存するようです。
MinGWのgccとfreeglutをインストールするにはMSYS2を使ってパッケージ指定するのが楽なようなのでとりあえずMSYS2をインストールします。
以下のサイトがとてもわかりやすかったです。
デフォルトでは”C:\msys64\”にインストールされるようです。今回はデフォルト設定で進めました。
この方法ではcmd.exeでUNIXコマンドを実行してもパスを通さない限り対応しません。
MSYS2からインストールするパッケージは以下の3つです。
- mingw-w64-x86_64-gcc
- mingw-w64-x86_64-gcc-libs
- mingw-w64-x86_64-freeglut
MSYS2のパッケージマネージャはpacmanなので、”C:\msys64\mingw64_shell.bat”を実行して次のコマンドでインストールできます。
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-freeglut
コンパイルテスト
インストール後、GLUTを利用したサンプルを書きます。
#include <stdlib.h> #include <GL/glut.h> void keyboard(unsigned char key, int x, int y); void display(void); int main(int argc, char** argv) { glutInit(&argc, argv); glutCreateWindow("GLUT Test"); glutKeyboardFunc(&keyboard); glutDisplayFunc(&display); glutMainLoop(); return EXIT_SUCCESS; } void keyboard(unsigned char key, int x, int y) { switch (key) { case '\x1B': exit(EXIT_SUCCESS); break; } } void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 0.0f, 0.0f); glBegin(GL_POLYGON); glVertex2f(-0.5f, -0.5f); glVertex2f( 0.5f, -0.5f); glVertex2f( 0.5f, 0.5f); glVertex2f(-0.5f, 0.5f); glEnd(); glFlush(); }
Using freeglut or GLUT with MinGWより引用
この後opengl32とfreeglutを指定して実行すると無事にコンパイルできました。
g++ sample1.c -lopengl32 -lfreeglut && ./a.exe
遭遇したエラー
error: spawn: No such file or directory
- MinGW64なのにMinGW32のライブラリやgccを指定しているときにこのエラーが出ました。
undefined reference to `__imp___glutInitWithExit'
- 未定義の参照があるようです。ライブラリをきちんと指定しているか確認してみてください。
fatal error: GL/glut.h: No such file or directory
- ライブラリがインストールされていないようです。
更新履歴
2019年6月9日 カテゴリを変更しました。
コメント
コメント一覧 (2件)
OpenGLとGLUTを使ってGCCでコンパイルする方法(Windows)
大変役に立ちました。Linuxで作成した地形表示プログラムを再ビルドしてWindowユーザに送ることができました。ありがとうございます!
コメントありがとうございます!お役に立てたようで嬉しいです!