Cygwin(rebase問題)で困っているクラスメートが多かったので, Windows10でWSLを使ってGLUT&glpngを使ったプログラムを動かす方法をまとめてみました.
(あくまで もろもろの事情で gcc/makeといったCLIベースでやらざるをえない時の方法です.VisualStudio等のIDEを用いた方法も可能ですが,この記事では触れません.)
WSLとは
Windows Subsystem for Linuxの略称. Windowsのカーネル上でLinuxディストリビューションを動かすためのサブシステム.
詳細はGoogle先生に聞いて下さい.
前提条件
- Windows10 Fall Creators Update(ver:1709)以降の64bit Windows10
WSLにインストールするLinuxディストリビューションはUbuntu18.04 LTSとします.
検証環境
-
環境1:ネイティブWindows10マシン
- CPU:Intel core i7-7700HQ
- Windows10 Home var:1803 build:17134.285
-
環境2:macOS上のWindows10仮想マシン
- CPU:Intel core i7-7567U
- ホストOS:macOS High Sierra 10.13.6
- 仮想化ソフトウェア:Oracle VirtualBox var:5.2.12 r122591
- ゲストOS:Windows10 Education var:1803 build:17314.286
2019/11/20 いつまで経っても追加されなかった環境2と3を削除,環境4を環境2に変更
下準備
まずはUbuntuが使えるようにします.
WSLのインストール
- Windowsの設定を開く(ウィンドウを最大化することをお勧めします)
- アプリへ移動
- アプリと機能→関連設定から
プログラムと機能
を選択 - 開いたウィンドウから
Windowsの機能の有効化または無効化
を選択 -
Windows Subsystem for Linux
のチェックボックスをオン
- OKを押して進める
- 再起動を求められるので, 再起動を行う.
以上でWSLのインストールが終わりです. 次はUbuntuのインストールです.
Ubuntuのインストール
- Microsoft Storeを開く
- Ubuntuと検索
-
Ubuntu 18.04 LTS
を選択
- 入手をクリック
-
Microsoftアカウントへログインして~
と言われたら必要ありません
を選択 -
起動
をクリック -
Installing, this may take a few minutes...
と言われるので言われた通り待つ. - ユーザ名(Windowsと同じにする必要無し), ログインパスワードを設定
- プロンプトが帰って来たらOK.
以上でUbuntuのインストールが終わりです. 次はパッケージのインストールです.
パッケージのインストール
$
はプロンプトを示すものです.入力の必要はありません.
-
$sudo apt update
を実行 -
$sudo apt install gcc make emacs unzip
を実行
ひとまずこれで下準備が終了です. 次はGUIベースのLinuxアプリケーションが動かせるようにします.
X Windowの設定
Ubuntu上で実行したGUIアプリケーションがWindows上に表示されるようにします.
Ubuntu 18.04のWSL上へのインストールと初期設定:X Windowの起動(Windows側からLinuxソフトウェアを別画面表示する)を参考に行いました.
VcXsrvのインストール
- ここからVcXsrvをダウンロードします.
- なにも変えずに
Next
をクリック
3. インストール場所を変える場合は変えてNext
をクリック
これでインストールが終了です.
Windowsのユーザ名が全角文字の場合,Ubuntu 18.04のWSL上へのインストールと初期設定:トラブルシューティング:Windowsのユーザ名が日本語の場合(2バイト文字を使っている場合)を参考に追加の作業を行って下さい.
VcXsrvの起動
- DesctopにXLaunchというショートカットが出来ているので,それをクリックします.
2. Multiple Windows
を選択し,次へ
をクリック
3. Start no cliant
を選択し,次へ
をクリック
(2018/11/13追記:GLUT_RGBAで色を指定する場合,Native openglのチェックを外さないと色が出ない場合があります.色が出ない場合は,チェックを外して下さい.)
5. 完了
をクリック
6. Windowsファイアウォールのウィンドウ(下図のようなウィンドウ)が出た場合,キャンセル
をクリック
Ubuntu側の設定
-
$sudo apt install x11-apps x11-utils x11-xserver-utils dbus-x11
を実行. -
$cd
してホームディレクトリに戻る -
$echo 'export DISPLAY=localhost:0.0' >> ~/.bash_profile
を実行 -
$source ~/.bash_profile
を実行 -
$xeyes &
を実行して下図のように表示されれば成功.
以上でX Windowの設定は完了です.次はGLUTとglpngをインストールします.
GLUT&glpngのインストール
GLUTとglpngをインストールします.
glpngはaptのリポジトリから削除されているため,自分でビルド(make)する必要があります.
森北出版株式会社刊 Springs of C サポートページの9番を参考に行いました.
GLUTのインストール
-
$sudo apt install freeglut3-dev
を実行
glpngのビルド→インストール
-
$mkdir tmp
で作業用ディレクトリを作成 - 作成したディレクトリへ移動
$wget ftp://ftp.usa.openbsd.org/pub/OpenBSD/distfiles/glpng-1.45/glpng.zip
を実行-
$unzip glpng.zip
を実行 -
src/
へ移動 -
$make -f Makefile.LINUX
を実行(warningが大量に出ますが成功はします) -
../lib/
へ移動 -
libglpng.a
を/usr/lib/
へコピー(sudo
が必要です) -
../include/GL
へ移動 -
glpng.h
を/usr/include/GL/
へコピー(sudo
が必要です)
以上でGLUT/glpngのインストールは完了です.次は動作確認を行います.
2019/9/24 追記 手順3で取得しているwget先のアドレスが切れているようです. http://mirrors.nycbug.org/pub/distfiles/ なら生きてる?
2021/6/01 追記 上の追記のリンクも切れていた…(distfilesまでは存在するがそこにglpng.zipが存在しない) Springs of Cのサポートページしか生きているリンクを確認できていません.これ以外で確認できた方は御一報下さい.
動作確認
glpngについてくるExampleをコンパイルして,GLUTとglpngが正常にインストールできているかを確認します.
森北出版株式会社刊 Springs of C サポートページの16番を参考にTest.c
を編集しました.
-
~/tmp/Example/
へ移動 -
Test.c
を編集する($emacs Test.c &
など)
3. 9行目と10行目(#include <gl/glpng.h>
と#include <gl/glut.h>
を入れ替える
4. 入れ替えた各行に対して,gl
をGL
に置き替える.
5. 67行目のmain関数の返り値を,void
からint
に置き替える.
6. main関数の引数にint argc, char** argv
を追加する.
7. 70行目の空行の後に,glutInit(&argc, argv);
を追加する.
8. 保存して終了(emacsならC-x C-s
で保存,C-x C-c
で終了) -
$gcc -Wall -o Test Test.c -lglpng -lglut -lGLU -lGL -lm
を実行 - 何も出なければコンパイル終了.
-
$./Test
でWindows側に下図のように表示されれば成功.(実際はくるくる回ってます)
以上で本題は終了です.
Windows再起動後にすること
Windowsを再起動した後は,VcXsrvを立ち上げ直す必要があります.VcXsrvのインストールを参考にVcXsrvを起動してください.
Windows側のディレクトリにアクセスする方法
Windows側のディレクトリ(Cドライブ内のディレクトリなど)にアクセスしたい場合,
/mnt/c/Users/YourName/...
へ移動するとアクセス出来ます.