kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。 Ubuntuの最新情報も紹介しています。

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 スキップ ==========

もっと詳細なログが欲しい場合は

もっと詳細なログが欲しい場合は、「ツール」メニューの「オプション」をクリックします。
左側の項目一覧から「ビルド/実行」を選択し、「MSBuildプロジェクトビルドの出力の詳細」設定を変更します。


4-3.ビルド完了

ビルドを行うと「Ubuntu on Windows」側でビルドが実行され、以下のように様々なファイルが生成されます。


実行可能なファイルは、「Project1.out」です。


注意事項やTips

注意事項やTipsについては、以下を参考にしてください。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション