GNU/Linux >> Linux の 問題 >  >> Linux

Linux 用 Windows サブシステムを使用して Visual Studio から Linux C++ アプリケーションを作成およびデバッグする

「Linux 用 Windows サブシステム」 (「Windows 上の Ubuntu の Bash」とも呼ばれます) については、これまで何度もブログに書いてきました。この Windows 機能への反応は少しおかしなものでした。なぜなら、人々は次のことを試みているからです:

  • 最小限に抑えます - 「ああ、ただの Cygwin です。」 (実際にはそうではありません。Linux カーネルを抽象化するレイヤーで実行されている実際の Ubuntu elf バイナリです。)
  • 設計する - 「Docker コンテナですか? VM ですか?」 (繰り返しになりますが、これはサブシステム全体です。想像以上に多くのことを行い、VM よりも高速です。)

以下は Andrew Pardoe による簡単な説明です:

<ブロック引用>

1. 開発者/ユーザーは bash シェルを使用します。
2. bash シェルは Ubuntu のインストールで実行されます
3. Ubuntu のインストールは、Windows サブシステムで実行されます。このサブシステムは、Linux をサポートするように設計されています。

超カッコイイ。 cmd、powershell、または bash (または zsh または Fish) を実行できるため、率直に言って、WSL のおかげで Windows を実行し続けることができました。 vim、emacs、tmux、Javascript/node.js、Ruby、Python、C/C++、C# &F#、Rust、Go などを実行できます。また、最後のコンソールを閉じるとバックグラウンド サービスがシャットダウンされることがわかっている限り、sshd、MySQL、Apache、lighttpd を実行することもできます。 Windows 上の Bash は開発者向けであり、バックグラウンド サーバー アプリではありません。そしてもちろん、あなたは栄光への道を歩むべきです.

<ブロック引用>

Windows 上の Bash は、Canonical が提供する Ubuntu ユーザーモード バイナリを実行します。つまり、コマンドライン ユーティリティは、ネイティブの Ubuntu 環境内で実行されるものと同じです。

Windows で Visual Studio を使用して、C++ で Linux コンソール アプリを作成したいと考えていました。なんで?なぜだめですか? VSが好きです。

Linux で C++ アプリをコンパイルおよびデバッグするための Visual Studio 2017 のセットアップ

  • 私は Visual Studio Community を利用しています。これは、少人数のグループ向けで、オープン ソースは無料です。
    • 既にインストールされている場合は、Visual Studio インストーラーを再度実行して (高速なので心配はいりません)、Linux を選択してください。
  • Windows 10 が最新で、Bash on Ubuntu がインストールされていることを確認します。
    • 「Windows 10 Creators Edition」は 4 月 11 日にリリースされますが、Windows Insider または Update Assistant を使用している場合は、4 月 5 日に入手できます。これには、Windows 上の Bash に対する一連の改善が含まれています (リリース ノート)

次に、bash シェルから、build-essential、gdb のサーバー、および openssh のサーバーがあることを確認します。

$ sudo apt update
$ sudo apt install -y build-essential
$ sudo apt install -y gdbserver
$ sudo apt install -y openssh-server

次に /etc/ssh/sshd_config を vi (または nano) で開きます

sudo nano /etc/ssh/sshd_config

簡単にするために、 PasswordAuthentication を設定します はい .最後のコンソールが閉じたときに SSHD デーモンが閉じられるので、これはセキュリティ上の問題ではないことを覚えておいてください。また、WSL のサブシステムは Windows とうまく連携する必要があるため、Windows ファイアウォールとその既存のすべてのルールに関係しています。 localhost についても話しています。

SSH キーを生成し、サービスを手動で開始します:

$ sudo ssh-keygen -A
$ sudo service ssh start

Visual Studio で Linux アプリを作成します (または Makefile アプリを開きます):

ターゲット (x64、x86、ARM) を確認してください:

Visual Studio のクロス プラットフォーム接続マネージャーでは、SSH 接続を制御できます (必要に応じて、秘密鍵を使用して接続を設定できます)。

ブーム。 Windows 上の Visual Studio で Linux 用の C++ を作成しています...ローカルの Linux サブシステムで実行、コンパイル、デバッグしています

ところで、私のように Raspberry Pi の小さな Linux コンピューターが好きな人にとっては...これは、これらの小さなデバイス用の C++ を記述するのにも最適な方法です。 File | には Blink の例さえあります。新しいプロジェクトを開始します。

また、非常に上級者の方は、Mingw-w64 の使用をやめて、WSL の下でソースから gcc 6.3 をコンパイルし、VS にそれを使用させるなどのクールなことを行ってください。 Visual Studio の C++ サポートでは、GCC と Clang の両方を含む多数の C++ コンパイラから選択できることを知りませんでした。

スポンサー: レッドゲートに感謝! データベースへのすべての変更を追跡 <強い>! SQL ソース管理を使用して、誰が、何を、なぜ変更したかを確認します。ソース管理システムで完全なバージョン履歴を取得します。 方法を参照してください。

Linux
  1. Pythonアプリケーションの作成、Linuxラボの構築、およびシステム管理者向けのその他のヒント

  2. gdb と gdbserver を使用して Windows から Linux プロセスをリモートでデバッグする:Windows 側では正確に何が必要ですか?

  3. Sublime Text から Windows Subsystem for Linux (WSL) を使用する

  1. Linux 用 Windows サブシステムの Kali

  2. Linux から Windows DLL を使用する

  3. Powershell から OS バージョン、Linux および Windows を判別する

  1. Windows –非Unicode Wineアプリケーションのコードページ/ロケール(Linuxシステムロケールとは異なります)を強制する方法は?

  2. WSL(Windows Subsystem for Linux)上で動作するWebサーバーにローカルネットワークからアクセスする方法

  3. Linux 用 Windows サブシステムで X マウス ポインターのサイズを設定する方法