他の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」で実行していくことにします。
とりあえず今のところ、書式はほとんど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」で実行していくことにします。