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ユーザに送ることができました。ありがとうございます!
コメントありがとうございます!お役に立てたようで嬉しいです!