ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

OpenGLで作ったものを、他環境でも動く実行ファイルにしたい

2010年06月16日 20時05分58秒 | ソフト開発日記
他のPCでも動くexeファイルにしたいけど、VC++では何故かうまくいかない。
とりあえず今のところ、書式はほとんどC言語なので、
拡張子を「.c」にしてcygwinでやってみるテスト。
(bool型の変数は普通に使ってたけれど、stdbool.h読み込んだら解決。)

環境はWindows7と最新のcygwin

まず「winglut.tar.gz」を検索してダウンロードして解凍。
「libglut32.a」を「C:cygwin\home\lib」に
「GL」フォルダを「C:cygwin\usr\include」にぶちこみます。
(上書き保存する前に、念のためバックアップをとっとく。)

「glut32.dll」を「C:Windows\System32」に入れる必要もありますが、
VC++でOpenGL使えるようにしたときにこれは終わってます。

そんでもって、次のように実行

「gcc -o test test.c -DWIN32 -lglut32 -lopengl32 -lglu32」

無事コンパイルできました。
「./test」と実行すると、ちゃんと動きました。

ただ、できたexeファイルを外から実行しようとすると

「cygwin1.dllが見つからなかったため、このアプリケーションを
開始できませんでした。アプリケーションをインストールしなおすと
この問題は解決される場合があります。」

というエラーが。
調べてみると、-mno-cygwinオプションつければcygwin1.dllに依存しない
実行ファイルできるようなので、
「gcc -mno-cygwin -o test test.c -DWIN32 -lglut32 -lopengl32 -lglu32」
と試してみると、

「The -mno-cygwin flag has been removed; use a mingw-targeted cross-compiler.」

というエラーメッセージが・・。
mingwでクロスコンパイルすればいいそうなので、調べてやってみることに。

とりあえずmingwをダウンロードしてインストール。
マイコンピュータ右クリック⇒システムの詳細設定⇒環境変数
で、ユーザの環境変数に「PATH」を新規作成(或いは編集)し、
変数値に「%PATH%;C:\MINGW\BIN;C:\CYGWIN\BIN」を追加。
-mno-cygwinオプション無しで、
「gcc -o test test.c -DWIN32 -lglut32 -lopengl32 -lglu32」
でいけました。exeファイルも外から動きました。

最終的なコマンドは、起動時にコンソール画面を出したくないので
-mwindowsをつけて↓こんな感じになりました。

「gcc -o test test.c -DWIN32 -lglut32 -lopengl32 -lglu32 -mwindows」

今後毎回これを入力するのは面倒なので、
「auto.sh」ファイルを作成し、上記コマンドを記入。
「./auto.sh」で実行していくことにします。