Visual Studio 2017 と Bash on Ubuntu on Windows による C++ Linux 開発環境の構築

  • 13
    いいね
  • 0
    コメント

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)] 選択して機能の有効化を行う必要があります。
image.png

機能を有効化後、[スタート スクリーン] から、[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

image.png

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] を起動します。
image.png

[変更] - [ワークロード] - [C++ による Linux 開発] を選択して、[変更] を選択します。
image.png

インストール完了後、Visual Studio 2017 を起動します。
起動後、[ツール] - [オプション] - [クロス プラットフォーム] - [接続マネージャー] - [追加] を選択します。
[リモート システムへの接続] ダイアログの [ホスト名] を "localhost"、 [ポート] を "22"、 [ユーザー名] を "debug002"(任意)、[認証の種類] を "パスワード"、[パスワード] を "debug002"(任意)のパスワードとして、[接続] を選択します。
image.png

次に、アプリケーションを作成します。
[ファイル] - [新規作成] - [プロジェクト] - [コンソール アプリケーション(Linux)] を選択し、[OK] を選択します。
image.png

main.cpp のコードを参照し、5 行目にブレイク ポイントを設定します。
image.png

[リモート GDB デバッガー] を選択し、デバッガーを起動します。
ファイヤー ウォールの警告が出る場合、アクセスを許可します。
image.png

デバッガーが起動すると、ブレイク ポイントにヒットして待機していることが分かります。
image.png

Linux の出力は、[デバッグ] - [Linux コンソール] から、 [Linux Console Window] を起動できます。
image.png

コーディングの多くで Visual Studio を使っている場合、やはり、他のツール、IDE では物足りなくなる。
VC++ で書いたものを Linux へ持っていこうとするが、やはり、g++ と違うことが多くて、苦労していました。

Visual Studio 2017 で Linux 開発出来て、さらに、Linux 自体も Windows 10 でサポートされるって、非常に欲しかった方向に進んで、必然の進歩なのかもしれませんが、Windows と Linux の親和性の強化、今後とも期待が持てる分野と考えています!!