mind-tech

主にテクノロジーや啓発系、副業などのテーマ中心

windows7 cygwin環境でOpenGLを動かす

今回は以下の3つの理由でwindows7cygwin環境上でopenglの動作環境を構築した情報を載せる


  1. windows上でopenglを動かす場合、visual studioを用いた情報が多かった
    visual studioは有償&ツールは学習コストが高いので論外→やっぱりunixcygwin
  2. cygwinwindows7openglを動かす情報が少なく感じた
  3. 研究室の皆が同じ環境を再現できるよう備忘録


Cygwin はあらかじめ必用なパッケージを導入しておけば標準で OpenGL 及び GLUT を使ったプログラムがビルド可能
cygwinでGLUTを使うとか、色々なサイトでfreeglut入れないと、って書いてあるけど、無くても動く(確認済み)

ビルドを cygwin で行うか MinGW で行うかで若干の差異がある
普通に cygwin でビルドすると X11 アプリになる。この場合 X server を起こしておかないと実行が出来ない
MinGW (-mno-cygwin オプションを用いる)でビルドすると、通常の Windows アプリになる。この場合は cygwin による UNIX エミュレーションが利用できない
よって、cygwinインストール時に、以下のようにx環境を一緒に入れておく
cygwinのインストールはむちゃくちゃ時間がかかるので注意
Xが入っているかどうかの確認はcygwin起動時に、以下のコマンドでxtermを起動
startxwin
入っていない場合、cygwin本家からsetup.exeをダウンロード



GNU Cコンパイラを用いる場合、通常以下のコマンドでコンパイルを行う
gcc -o @ @.c -lglut -lGLU -lGL -lm
動作環境によっては、-lXmu,-lXi,-lXext,-lX11などのX Windowのライブラリのリンクが必要な場合もある また、ヘッダファイルやライブラリの場所が指定されていない場合には、次のように記述する必要がある
gcc -o @ @.c -I/usr/local/include -L/usr/local/lib -lglut -lGL -lXmu -lXi -lXext -lX11 -lm -lGLU
ここで以下のように怒られた
freeglut(./@.c):failed to open display''
これは、環境変数 DISPLAYが正しく設定できていないから
DISPLAYはXサーバが実際に描画するサーバ名
普通は X clientと X serverは同一のホスト(ローカルホスト)で動いているので、DISPLAY は :0.0 (=localhost:0.0) となっている
ここで、ipconfigで自分のローカルIPを指定してもエラーを吐かれたので、以下のようにして設定
export DISPLAY=:0
動いた実行結果を載せる
毎回、こんなリンクオプションとか書いてるのは疲れるのでmakefileを作成
makefileの暗黙ルールでTABが入るのでコピペ注意

こんな感じ
CC            = gcc
LDFLAGS = -L/usr/local/lib
BUILD_DIR = $(shell pwd)
LIBS = -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm
OBJS = c4-2.o
PROGRAM = hoge

all: $(PROGRAM)

$(PROGRAM): $(OBJS)
$(CC) $(OBJS) $(LDFLAGS) $(LIBS) -o $(PROGRAM)

clean:; rm -f *.o *~ $(PROGRAM)

load: $(PROGRAM)
./$(PROGRAM) $(BUILD_DIR)
コンパイル
make
実行は
make load

Copyright ©mind-teck All rights reserved..
🔒プライバシーポリシー