Bash on Ubuntu on Windows と Visual Studio 2017 により Windows 10 上で、Linux アプリ開発が可能に!
Windows 10 Anniversary Update から、OS の機能一つとして、Linux のディストリビューションの一つである Ubuntu がサポートされるようになりました。Windows 環境で、Linux が利用可能です!
さらに、Visual Studio 2017 では、Linux の C++ 開発が標準でサポートされるようになりました。
Visual Studio の IDE を使い、C++ 開発を行い、コード上にプレイク ポイントを設定し、ステップ実行を行うことが可能です!!
Bash on Ubuntu on Windows のインストールと構成
この Bash on Ubuntu on Windows は、デフォルトでは、有効化されないので、[Windows の機能の有効化または無効化] から、[Windows Subsystem for Linux(beta)] 選択して機能の有効化を行う必要があります。
機能を有効化後、[スタート スクリーン] から、[Bash on Ubuntu on Windows] を選択すると、初回起動時に、Windows ストアから Ubuntu がインストールされます。
-- ベータ機能 --
これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
次のサイトに示される条件に基づいてライセンスされています。
https://aka.ms/uowterms
続行するには、"y" を入力してください: y
Windows ストアからダウンロードしています... 100%
ファイル システムを展開しています。この処理には数分かかります...
Ubuntu のロケールを Windows のロケール (ja-JP) と一致するように設定しますか?
既定のロケールは en_US です。
続行するには、"y" を入力してください: y
既定の UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と一致する必要はありません。
詳細: https://aka.ms/wslusers を参照してください
新しい UNIX ユーザー名を入力してください: root
UNIX ユーザーが見つかりました: root
インストールが正常に終了しました
環境が間もなく開始されます...
ドキュメントを参照できる場所: https://aka.ms/wsldocs
root@Ubuubu:/mnt/c/Windows/System32#
まず、g++ 等の開発環境をインストールします。
root@Ubuubu:~# sudo apt install -y build-essential
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
(省略)
次に、リモート デバッグを可能にする gdbserver をインストールします。
root@Ubuubu:~# sudo apt install -y gdbserver
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
gdbserver
(省略)
SSH サーバーをインストールします。
root@Ubuubu:~# sudo apt install -y openssh-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
(省略)
任意のテキスト エディタを使い sshd_config を開き、“PasswordAuthentication” を "yes" に設定します。
root@Ubuubu:~# sudo vi/etc/ssh/sshd_config
SSH キーを生成します。
root@Ubuubu:~# sudo ssh-keygen -A
SSH サーバーを起動します。
root@Ubuubu:~# sudo service ssh start
* Starting OpenBSD Secure Shell server sshd [ OK ]
(*)Bash on Ubuntu on Windows のプロセスを終了すると SSH サーバーも終了していまいますので、Bash on Ubuntu on Windows のプロセス起動時には、SSH サーバーも起動するようにしてください。
SSH のデフォルトでは、root 権限のログオンに制限がありますので、任意のユーザーを追加しておきます。
root@Ubuubu:~# sudo adduser debug002
ユーザー `debug002' を追加しています...
新しいグループ `debug002' (1001) を追加しています...
新しいユーザー `debug002' (1001) をグループ `debug002' に追加しています...
ホームディレクトリ `/home/debug002' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: password updated successfully
Changing the user information for debug002
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
以上で正しいですか? [Y/n] y
Visual Studio 2017 による Linux C++ 開発の設定
[スタート スクリーン] から [Visual Studio Installer] を起動します。
[変更] - [ワークロード] - [C++ による Linux 開発] を選択して、[変更] を選択します。
インストール完了後、Visual Studio 2017 を起動します。
起動後、[ツール] - [オプション] - [クロス プラットフォーム] - [接続マネージャー] - [追加] を選択します。
[リモート システムへの接続] ダイアログの [ホスト名] を "localhost"、 [ポート] を "22"、 [ユーザー名] を "debug002"(任意)、[認証の種類] を "パスワード"、[パスワード] を "debug002"(任意)のパスワードとして、[接続] を選択します。
次に、アプリケーションを作成します。
[ファイル] - [新規作成] - [プロジェクト] - [コンソール アプリケーション(Linux)] を選択し、[OK] を選択します。
main.cpp のコードを参照し、5 行目にブレイク ポイントを設定します。
[リモート GDB デバッガー] を選択し、デバッガーを起動します。
ファイヤー ウォールの警告が出る場合、アクセスを許可します。
デバッガーが起動すると、ブレイク ポイントにヒットして待機していることが分かります。
Linux の出力は、[デバッグ] - [Linux コンソール] から、 [Linux Console Window] を起動できます。
コーディングの多くで Visual Studio を使っている場合、やはり、他のツール、IDE では物足りなくなる。
VC++ で書いたものを Linux へ持っていこうとするが、やはり、g++ と違うことが多くて、苦労していました。
Visual Studio 2017 で Linux 開発出来て、さらに、Linux 自体も Windows 10 でサポートされるって、非常に欲しかった方向に進んで、必然の進歩なのかもしれませんが、Windows と Linux の親和性の強化、今後とも期待が持てる分野と考えています!!