2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CodeでないほうのVisualStudioで、WSLを使ってC++のLinuxアプリを作る

Posted at

まずはVisualStudio 2022をインストールします。

winget install --id Microsoft.VisualStudio.2022.Community --force --override "--add Microsoft.VisualStudio.Workload.NativeCrossPlat --includeRecommended"

これはCommunity版の場合です。Professional版やEnterprise版を使いたい人は、適当に修正してください。

2023-09-25.png

なお「C++を使用したLinux及び埋め込み開発」のワークロードが必要になります。最初のコマンドラインに含まれています。上のVisualStudio Installerのイメージは、GUIから手動で設定したい人のための参考です。

次にWSLを設定します。

wsl --install
wsl
sudo apt update
sudo apt install g++ gdb make ninja-build rsync zip

2023-09-25 (1).png

新しいプロジェクトを作成します。ターゲットをLinuxにして、コンソールアプリケーションを作成してください。

2023-09-25 (2).png

プロジェクトができました。しかしこれは、まだWSLでは動きません。

スクリーンショット 2023-09-25 203059.png

プロジェクトのプロパティから、プラットフォームツールセットをWSL2 GCC Toolsetにします。

.vcxprojファイルを直接編集して、プラットフォームツールセットをWSL2 GCC Toolsetにすることもできます。

  <PropertyGroup>
    <PlatformToolset>WSL2_1_0</PlatformToolset>
  </PropertyGroup>

2023-09-25 (5).png

これで、Windowsアプリと同じようにデバッグできるようになりました。プログラムは実行時にWSL環境へデプロイされますので、実行前にコピーする手間はかかりません。


流行りのVisualStudio Codeではなく、VisualStudio 20xxで開発したいという人の多くは、ターゲット環境がウェブやメインフレームではなくて、組み込みLinuxである人が多いのではないかと思われます。

WSLでビルドしたバイナリを実機に持っていくと、以下のようなエラーが出て実行できないことがあります。

./application: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./application)

ターゲットマシンでビルドするか、ターゲットマシンのlibをアップグレードするのが、これの一般的な解決策になります。

しかしながら組み込み機器の開発においては、ターゲットマシン上でビルドしたりapt upgradeしたりすることが困難な場合があります。

そこでターゲットマシンのOSに合わせてWSLにインストールするディストリビューションをダウングレードします。具体的には、wsl --install -d Ubuntu-20.04 のようにして、ディストリビューションとバージョンを明示的に指定してインストールします。

スクリーンショット 2023-09-25 203200.png

デフォルトのディストリビューション以外のWSLでデバッグするには、プロジェクトのプロパティから「WSLのディストリビューション名」を明示的に指定します。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?