こんにちはー、ニアです!
今回は、Visual Stuido 2017でLinux用のC++アプリを作成して、LinuxがインストールされているPC上で実行していこうと思います。
1. 用意するもの
- Visual Studio 2017(CommunityエディションでもOK)がインストールされたWindows PC(※1)
- Linux PC(この記事では、Linux Mint 18.1が入ったPCを使用しています)
(※1)Visual Studio 2017のインストーラーのワークロードから、「C++によるLinux開発」をあらかじめインストールしておきます。
2. Visual Studio 2017でLinuxアプリのプロジェクト作成
Visual Studio 2017を起動し、新しいプロジェクトを作成します。
新しいプロジェクトのダイアログでは、「Visual C++」>「クロスプラットフォーム」>「コンソールアプリケーション(Linux)」を選択し、プロジェクト名を入力します。
あとは、C++のコードを記述していきます。今回はサンプルなので初心の頃を偲んで「Hello World!」を表示するプログラムを作成します。
#include <stdio.h>
int main() {
printf( "Hello World!\n" );
return 0;
}
3. Linux PCでリモートビルド&デバッグ
ソースコードが完成したらビルドをしていくのですが、その前にリモート先のLinuxマシンにて、いくつか設定を行います、
3.1. Linux PCでSSH接続の設定
開発環境のPCからリモート先のLinux PCにSSH接続できるように、リモート先のLinux PCにて、SSH接続の設定をします。SSH接続には、パスワード認証の他、秘密キー(RSA鍵など)を使った公開鍵認証に対応しています。
せっかくなので、公開鍵認証を使ってみましょう。RSA鍵は「ssh-keygen」コマンドで作成できます。
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/xiia/.ssh/id_rsa): user_rsa
Enter passphrase (empty for no passphrase):[RSA鍵のパスフレーズ]
Enter same passphrase again:[RSA鍵のパスフレーズ(上と同じ)]
Your identification has been saved in user_rsa
Your public key has been saved in user_rsa.pub.
cd /home/user
mkdir .ssh
mv user_rsa.pub /home/user/.ssh/authorized_keys
作成した秘密鍵は、開発環境のPCに保存しておきます。
次に、sshd_configを編集して、RSA鍵による公開鍵認証を有効にします。
vi /etc/ssh/sshd_config
# RSA鍵で認証できるようにします
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
# ↓
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
sshd -t
service sshd restart
3.2. Linux PCにg++とgdb、gdbserverをインストール
必要に応じて、Linux PCにC++のコンパイラー「g++」とデバッガー「gdb」、リモートデバッグ用ツール「gdbserver」をインストールします。
apt install g++
apt install gdb
apt install gdbserver
3.3. 開発環境のPCからLinux PCにSSH接続
Linuxアプリの初回ビルド時、SSH接続のダイアログが現れるので、ホスト名やポート番号、ユーザー名を入力し、秘密鍵のファイルを選択して、接続ボタンを押します。
オプションの「クロスプラットフォーム」>「接続マネージャー」からでも設定することができます。
リモート接続に成功すると、プログラムのコンパイルが始まり、ビルドに成功すると、Linux PC上でアプリを実行することができます。
メニューバーから「デバッグ」>「Linuxコンソール」を選択すると、コンソール画面が表示されます。
3.4. ビルドしたファイルはどこにあるの?
Linuxアプリのプロジェクトをビルドすると、リモート先のLinux PCの「/home/[ユーザー名]/projects」ディレクトリーの中にソースファイルと実行ファイルがデプロイされます。
4. おわりに
Visual Studio 2017の登場で、今まではLinuxのemacsやvim、Eclipseだけでなく、WindowsのVisual StudioでLinux向けのアプリが作れるようになりました。
今回は、クライアント向けのLinuxにリモート接続してプログラムを実行していたのですが、接続先を変えればLinuxサーバー向けのアプリをWindowsで作ってデプロイすることができますね。
[END]
コメント