2019年8月6日火曜日

Visual Studio + WSLでGUIプログラミング

Windows Subsystem for Linux (WSL)があればOpenCVなどのプログラミングで WindowsとLinuxの良いところ取りができるんじゃないかと思って試してみた. つまり,Visual StudioからLinux側のGDB Serverに接続してデバッグができ, Windows用のXサーバがあればLinux側で実行した結果のグラフィカルな表示はWindows側で行う. この機能を使えば,ライブラリはaptでインストールして,コーディングはVisual Studioを使って, ウィンドウ操作は使い慣れたWindows上でやる. でもファイルやスクリプトの操作は今更覚えたくないコマンドプロンプトじゃなくてLinuxのターミナルで出来るはず.

Ubuntuの開発環境の導入

Ubuntuの開発環境の導入手順は次のとおり.

  1. WSLの有効化
  2. Ubuntu 18.04 LTS on WSLの導入
  3. GDB Serverのインストール

WSLの有効化

WSLの導入方法は2019/5/30現在,ググれば大量に見つかる. わかりやすい記事は例えばここ. ただ一点注意するのは,WSLは2017年秋頃にベータ版から正式版に変わっったので導入方法が少し変わった. ベータ版の時点の解説記事を間違って読まないように.Windows Insider Programがどうこう書いてあれば古い記事と思えばいい.

具体的な導入方法は簡単で,「Windows の機能の有効化または無効化」で「Windows Subsystem for Linux」のチェックをONにするか, PowerShellで以下のコマンドを打つだけらしい.

PS> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Ubuntuの導入

Ubuntuの導入はクソ簡単になってる.Windows StoreでUbuntu 18.04を探してインストールのボタンをクリックするだけ. ただ,これも後々自動化するかもしれないのでコマンドをメモっておく. Ubuntuを起動したら最初だけアカウント名とパスワードを設定しないといけない.

PS> Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile ~/Ubuntu.appx -UseBasicParsing
PS> Add-AppxPackage -Path ~/Ubuntu.appx
PS> Ubuntu.exe

GDB Serverの導入

Ubuntuがインストールされてしまえば標準的なパッケージのインストールはaptつかって簡単にできる.

sudo apt update
sudo apt install openssh-server build-essential gdb gdbserver zip

SSHサーバの起動

SSHサーバを起動するには設定ファイルをsshd_configをエディタで開き...

sudo nano /etc/ssh/sshd_config

パスワードの設定を許可するために次の行がコメントアウトされていれば,コメント記号を外し...

PasswordAuthentication yes

サーバを起動する.(WSLでこのサーバを自動的に起動する方法が分からない.)

sudo service ssh start

参考

X Serverの導入

Windows用のXサーバをインストールするとWSLでもGUIが利用できる. ここではVcXsrvというサーバをインストールし

VcXsrvの導入

環境変数DISPLAYの設定

echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc
source ~/.bashrc

日本語化

sudo apt install fonts-takao

Visual StudioをGDB Serverに接続する

(未完成)

参考