Visual Studio + Ubuntu on WindowsでUbuntuのソフトウェアが開発できる
「Windows」の統合開発環境(IDE)である「Visual Studio」を利用して「Ubuntu on Windows」の「Ubuntu」と連携し、「Ubuntu」のソフトウェアが開発できるようになりました。WSLはまだβ版
「Ubuntu on Windows」で利用できる「Ubuntu」は、「Canonical」が提供する本物の(正規)の「Ubuntu」です。現在「Ubuntu on Windows」では、「Ubuntu 16.04」がインストールされます。
しかし「Linux Kernel」に相当する部分は、「Microsoft」が開発している「WSL」が担当しています。
「WSL」は現在β版であり、「Linux Kernel」が持つすべてのシステムコールはまだ実装されていません。
そのため「Ubuntu on Windows」を利用して「Ubuntu」のソフトウェアが開発できるといっても、「WSL」による制約から、開発したソフトウェアが満足に動作しないケースもあります。
C++による開発が可能に
「Visual Studio」は、開発に様々な言語が利用できます。ここで紹介する言語は「C++」です。
IDEで言えば「Visual C++」が対象になります。
Visual StudioとUbuntu
先ほど紹介した通り、すでに「Visual Studio」と実機にインストールした「Ubuntu」間で「Visual Studio」による開発が可能になっています。ここで紹介する方法は上記の応用です。
作業内容はそれほど変わりません。
1.Ubuntu on Windows側の準備
まずUbuntu側の準備です。事前にソフトウェアのビルドに必要なパッケージをインストールしておきましょう。
それに加え、「Visual Studio」から作業するために必要なパッケージをインストールする必要があります。
1-1.GDBサーバーとSSHサーバーのインストール
以下のコマンドを実行し、GDBサーバーとSSHサーバーをインストールします。
sudo apt-get install openssh-server build-essential gdb gdbserver
1-2.SSHサーバーの設定
インストールが完了したら、SSHサーバーの設定を行います。以下のコマンドを実行し、設定ファイルを開きます。
sudo nano /etc/ssh/sshd_config
「PasswordAuthentication」の項目を探し、以下のように設定値を書き換えます。
PasswordAuthentication yes
補足
この環境はテスト環境であり、また詳細を紹介すると手順が長くなるため、ここではパスワードによる認証を利用します。SSHサーバーの設定方法は紹介しません。
1-3.SSHサーバーの起動
SSHサーバーの設定が完了したら、以下のコマンドを実行しSSHサーバーを起動します。
sudo service ssh start
SSHサーバーの起動状態は、以下のコマンドで確認できます。
sudo service ssh status
以下のようになっていれば、OKです。
SSHサーバーの設定を変更し、設定を反映するためにSSHサーバーを再起動したければ、以下のコマンドを実行します。
sudo service ssh restart
Bashセッションを開始する度にSSHサーバーの起動が必要
Bashセッションを開始する度にSSHサーバーの起動が必要になります。すべてのBashを閉じるとBashセッションが破棄され、すべてのLinuxプロセスが終了します。
そのためその時点でSSHサーバーも終了します。
Bashセッションは、最初にBashを起動した時に生成され、すべてのBashが終了した時に破棄されます。
2.Visual Studioのセットアップ
ここでは「Visual Studio」側で必要な作業を行います。ここでは例として「Visual Studio 2017 RC版」を利用します。
2-1.Visual C++ for Linux Development拡張機能のインストール
「Visual Studio 2017」より前の「Visual Studio」を利用している場合は、「Visual C++ for Linux Development」拡張機能をインストールします。「Visual C++ for Linux Development」は、「Visual Studio」の拡張機能の管理画面からインストールを行うことも可能です。
Visual Studio 2017 RC版の場合
「Visual Studio 2017 RC版」を利用している場合、インストール時に「C++によるLinux開発」にチェックを入れてからインストールを行えばOKです。すでに「Visual Studio 2017 RC版」をインストール済みの場合は、プロジェクトの新規作成画面から「Visual Studioインストーラーを開く」をクリックし、「C++によるLinux開発」を有効にしてください。
2-2.SSH接続の追加
次にSSHの設定を行います。「ツール」メニュー > 「オプション」をクリックし、左側の項目一覧から「Cross Platform」を展開し、「Connenction Manager」をクリックします。
上記の画面が表示されたら「Add」ボタンをクリックします。
補足
SSHの設定はソフトウェアのビルド時に行うことも可能です。2-3.SSHの接続設定
以下の画面が表示されたら、SSHサーバーに接続するための設定を入力し、「Connect」ボタンをクリックします。Host Name
「localhost」を入力します。User name
「Ubuntu on Windows」上のユーザーアカウントを入力します。Password
「User name」で指定したユーザーのパスワードを入力します。このパスワードは、「Ubuntu on Windows」で「sudo」を実行した時に入力するパスワードと同じです。
2-4.設定完了
以下のように接続が追加されます。3.プロジェクトの作成
ここでは例として新規にプロジェクトを作成します。3-1.プロジェクトの新規作成
「ファイル」メニュー > 「新規作成」 >「プロジェクト」をクリックします。プロジェクト作成画面が表示されるので、用途に合わせてプロジェクトの種類を選択し、「OK」ボタンをクリックします。
ここでは例として「空のプロジェクト」を選択しました。
3-2.プロジェクトの設定
必要に応じてプロジェクトの設定を行います。プロジェクトの設定画面は、「ソリューションエクスプローラー」から設定を行いたいプロジェクトを選択し、「プロジェクト」メニュー > 「プロパティ」から表示できます。
左側の項目一覧から「全般」を選択し、「構成の種類」から生成するソフトウェアの種類が指定できます。
3-3.デバッグの設定
こちらも必要に応じてプロジェクトの設定を行います。デバッグ実行時にエラーが発生する場合は、左側の項目一覧から「デバッグ」を選択し、「デバッグモード」を「gdb」に変更してみてください。
3-4.複数のSSHの接続先がある時は
以下のように複数のSSHの接続先がある時は、プロジェクトの設定から接続先を指定できます。左側の項目一覧から「全般」を選択し、「リモートビルドマシン」から接続先を指定できます。
4.ビルドやデバッグ
ここから実際にソースコードの編集やビルドを行っていきます。4-1.ソースコードの作成
ソースコードを作成します。4-2.ソフトウェアのビルド
「ビルド」メニューからソリューションもしくはプロジェクトのビルドを行います。「出力」ペインに以下のようにビルドログが出力されます。
1>------ ビルド開始: プロジェクト:Project1, 構成:Debug x64 ------
1>Validating architecture
1>Validating sources
1>Copying sources remotely
1>Starting remote build
1>Compiling sources:
1>main.cpp
1>Linking objects
1>Project1.vcxproj -> c:\Users\kledg\documents\visual studio 2017\Projects\Project1\Project1\bin\x64\Debug\Project1.out
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
1>Validating architecture
1>Validating sources
1>Copying sources remotely
1>Starting remote build
1>Compiling sources:
1>main.cpp
1>Linking objects
1>Project1.vcxproj -> c:\Users\kledg\documents\visual studio 2017\Projects\Project1\Project1\bin\x64\Debug\Project1.out
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
もっと詳細なログが欲しい場合は
もっと詳細なログが欲しい場合は、「ツール」メニューの「オプション」をクリックします。左側の項目一覧から「ビルド/実行」を選択し、「MSBuildプロジェクトビルドの出力の詳細」設定を変更します。
4-3.ビルド完了
ビルドを行うと「Ubuntu on Windows」側でビルドが実行され、以下のように様々なファイルが生成されます。実行可能なファイルは、「Project1.out」です。