GNU/Linux >> Tutoriels Linux >  >> Linux

Écriture et débogage d'applications Linux C++ à partir de Visual Studio à l'aide du sous-système Windows pour Linux

J'ai déjà blogué plusieurs fois sur le "sous-système Windows pour Linux" (également connu sous le nom de "Bash sur Ubuntu sur Windows"). La réponse à cette fonctionnalité de Windows a été un peu amusante car les gens essaient de :

  • Minimiser - "Oh, c'est juste Cygwin." (Ce n'est en fait pas le cas, ce sont les binaires elf d'Ubuntu qui s'exécutent sur une couche qui résume le noyau Linux.)
  • Concevez-le :"C'est donc un conteneur Docker ? Une VM ?" (Encore une fois, c'est un sous-système complet. Il fait BEAUCOUP plus que vous ne le pensez, et il est plus RAPIDE qu'une machine virtuelle.)

Voici une explication simple d'Andrew Pardoe :

1. Le développeur/utilisateur utilise un shell bash.
2. Le shell bash s'exécute sur une installation d'Ubuntu
3. L'installation d'Ubuntu s'exécute sur un sous-système Windows. Ce sous-système est conçu pour prendre en charge Linux.

C'est vraiment cool. WSL m'a, franchement, permis d'exécuter Windows car je peux exécuter cmd, powershell, OR bash (ou zsh ou Fish). Vous pouvez exécuter vim, emacs, tmux et exécuter Javascript/node.js, Ruby, Python, C/C++, C# &F#, Rust, Go, etc. Vous pouvez également maintenant exécuter sshd, MySQL, Apache, lighttpd tant que vous savez que lorsque vous fermez votre dernière console, les services d'arrière-plan s'arrêteront. Bash sur Windows est destiné aux développeurs, pas aux applications de serveur d'arrière-plan. Et bien sûr, vous pouvez vous frayer un chemin vers la gloire.

Bash sous Windows exécute les binaires en mode utilisateur Ubuntu fournis par Canonical. Cela signifie que les utilitaires de ligne de commande sont les mêmes que ceux qui s'exécutent dans un environnement Ubuntu natif.

Je voulais écrire une application console Linux en C++ en utilisant Visual Studio sous Windows. Pourquoi? Pourquoi pas? J'aime VS.

Configuration de Visual Studio 2017 pour compiler et déboguer des applications C++ sur Linux

  • J'ai Visual Studio Community, qui est gratuit pour les petits groupes et open source.
    • Si vous l'avez déjà installé, assurez-vous d'exécuter à nouveau le programme d'installation de Visual Studio (c'est rapide, ne vous inquiétez pas) et sélectionnez Linux :
  • Je m'assure que mon Windows 10 est à jour et que Bash sur Ubuntu est installé.
    • "Windows 10 Creators Edition" est sorti le 11 avril, mais si vous êtes un initié de Windows ou utilisez l'assistant de mise à jour, vous pouvez l'obtenir le 5 avril. Il inclut un tas d'améliorations à Bash sur Windows (notes de version)

Ensuite, à partir du shell bash, assurez-vous d'avoir build-essential, le serveur de gdb et le serveur d'opensh :

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

Ouvrez ensuite /etc/ssh/sshd_config avec vi (ou nano) comme

sudo nano /etc/ssh/sshd_config

et par souci de simplicité, définissez PasswordAuthentication à oui . N'oubliez pas que ce n'est pas un problème de sécurité aussi important que vous ne le pensez car le démon SSHD se ferme lorsque votre dernière console le fait, et parce que le sous-système de WSL doit bien fonctionner avec Windows, il est au courant du pare-feu Windows et de toutes ses règles existantes, plus nous Je parle aussi de localhost.

Générez maintenant les clés SSH et démarrez manuellement le service :

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

Créez une application Linux dans Visual Studio (ou ouvrez une application Makefile) :

Assurez-vous de connaître votre cible (x64, x86, ARM) :

Dans le gestionnaire de connexions multiplateformes de Visual Studio, vous pouvez contrôler vos connexions SSH (et en configurer des avec des clés privées, si vous le souhaitez.)

Boom. J'écris du C++ pour Linux dans Visual Studio sous Windows... en cours d'exécution, de compilation et de débogage sur le sous-système Linux local

BTW, pour ceux d'entre vous, comme moi, qui aiment vos petits ordinateurs Linux Raspberry Pi... c'est aussi une excellente façon d'écrire du C++ pour ces petits appareils. Il y a même un exemple Blink dans File | Nouveau projet à démarrer.

De plus, pour ceux d'entre vous qui sont très avancés, arrêtez d'utiliser Mingw-w64 et faites des trucs sympas comme compiler gcc 6.3 à partir de la source sous WSL et faire en sorte que VS l'utilise ! Je n'avais pas réalisé que la prise en charge C++ de Visual Studio vous permettait de choisir entre un certain nombre de compilateurs C++, y compris GCC et Clang.

Parrain : Merci à Redgate ! Suivez chaque modification apportée à votre base de données  ! Découvrez qui a apporté des modifications, ce qu'ils ont fait et pourquoi, avec SQL Source Control. Obtenez un historique complet des versions dans votre système de contrôle de code source. Regarde comment.

Linux
  1. Écrire des applications Python, créer des laboratoires Linux et plus de conseils pour les administrateurs système

  2. Kali sur le sous-système Windows pour Linux

  3. Utiliser la DLL Windows à partir de Linux

  4. Déboguer à distance un processus Linux depuis Windows avec gdb et gdbserver :que faut-il exactement côté Windows ?

  5. Utilisation du sous-système Windows pour Linux (WSL) à partir de Sublime Text

Comment exécuter des applications et des jeux Windows sur Linux à l'aide de Wine

Le guide ultime du sous-système Windows pour Linux (Windows WSL)

Utilisation de Tailscale sur Windows pour réseauter plus facilement avec WSL2 et Visual Studio Code

Prise en charge officielle du débogage à distance d'une application .NET Core Linux dans WSL2 à partir de Visual Studio sous Windows

Débogage à distance d'une application .NET Core Linux dans WSL2 à partir de Visual Studio sous Windows

Comment installer et configurer le sous-système Windows pour Linux