GNU/Linux >> Tutoriales Linux >  >> Linux

Escritura y depuración de aplicaciones C++ de Linux desde Visual Studio mediante el subsistema de Windows para Linux

He escrito en un blog sobre el "Subsistema de Windows para Linux" (también conocido como "Bash en Ubuntu en Windows") muchas veces antes. La respuesta a esta característica de Windows ha sido un poco divertida porque la gente intenta:

  • Minimizarlo:"Oh, es solo Cygwin". (En realidad no lo es, son los archivos binarios reales de Ubuntu elf que se ejecutan en una capa que abstrae el kernel de Linux).
  • Diséñalo:"¿Entonces es un contenedor docker? ¿Una máquina virtual?" (Nuevamente, es un subsistema completo. Hace MUCHO más de lo que piensas, y es MÁS RÁPIDO que una máquina virtual).

Aquí hay una explicación simple de Andrew Pardoe:

1. El desarrollador/usuario usa un shell bash.
2. El shell bash se ejecuta en una instalación de Ubuntu
3. La instalación de Ubuntu se ejecuta en un subsistema de Windows. Este subsistema está diseñado para soportar Linux.

Es genial. Francamente, WSL me ha mantenido ejecutando Windows porque puedo ejecutar cmd, powershell o bash (o zsh o Fish). Puede ejecutar vim, emacs, tmux y ejecutar Javascript/node.js, Ruby, Python, C/C++, C# &F#, Rust, Go y más. Ahora también puede ejecutar sshd, MySQL, Apache, lighttpd siempre que sepa que cuando cierre su última consola, los servicios en segundo plano se cerrarán. Bash en Windows es para desarrolladores, no para aplicaciones de servidor en segundo plano. Y, por supuesto, apta para llegar a la gloria.

Bash en Windows ejecuta archivos binarios en modo de usuario de Ubuntu proporcionados por Canonical. Esto significa que las utilidades de la línea de comandos son las mismas que las que se ejecutan en un entorno nativo de Ubuntu.

Quería escribir una aplicación de Consola Linux en C++ usando Visual Studio en Windows. ¿Por qué? ¿Por que no? me gusta vs.

Configurar Visual Studio 2017 para compilar y depurar aplicaciones C++ en Linux

  • Tengo Visual Studio Community, que es gratuito para grupos pequeños y de código abierto.
    • Si ya lo tiene instalado, asegúrese de ejecutar el instalador de Visual Studio nuevamente (es rápido, no se preocupe) y seleccione Linux:
  • Me aseguro de que mi Windows 10 esté actualizado y tenga Bash en Ubuntu instalado.
    • La "Edición para creadores de Windows 10" estará disponible el 11 de abril, pero si eres usuario de Windows Insider o usas el Asistente de actualización, puedes obtenerla el 5 de abril. Incluye un montón de mejoras para Bash en Windows (notas de la versión)

Luego, desde el shell bash, asegúrese de tener build-essential, el servidor de gdb y el servidor de openssh:

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

Luego abra /etc/ssh/sshd_config con vi (o nano) como

sudo nano /etc/ssh/sshd_config

y por motivos de simplicidad, establezca PasswordAuthentication a . Recuerde que no es un problema de seguridad tan grande como pensaría, ya que el demonio SSHD se cierra cuando lo hace su última consola, y debido a que el subsistema de WSL tiene que funcionar bien con Windows, está al tanto del Firewall de Windows y todas sus reglas existentes, además nosotros también estamos hablando de localhost.

Ahora genere claves SSH e inicie manualmente el servicio:

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

Cree una aplicación de Linux en Visual Studio (o abra una aplicación Makefile):

Asegúrese de conocer su objetivo (x64, x86, ARM):

En el Administrador de conexiones multiplataforma de Visual Studio, puede controlar sus conexiones SSH (y configurarlas con claves privadas, si lo desea).

Auge. Estoy escribiendo C++ para Linux en Visual Studio en Windows... ejecutando, compilando y depurando en el subsistema local de Linux

Por cierto, para aquellos de ustedes, como yo, que aman sus pequeñas computadoras Linux con Raspberry Pi... esta también es una excelente manera de escribir C++ para esos pequeños dispositivos. Incluso hay un ejemplo de parpadeo en Archivo | Nuevo proyecto para comenzar.

Además, para aquellos de ustedes que son muy avanzados, ¡dejen de usar Mingw-w64 y hagan cosas geniales como compilar gcc 6.3 desde la fuente bajo WSL y hacer que VS lo use! No sabía que la compatibilidad con C++ de Visual Studio te permite elegir entre varios compiladores de C++, incluidos GCC y Clang.

Patrocinador: ¡Gracias Redgate! Haga un seguimiento de cada cambio en su base de datos ! Vea quién hizo cambios, qué hicieron y por qué, con SQL Source Control. Obtenga un historial de versiones completo en su sistema de control de código fuente. Ver cómo.

Linux
  1. Escribir aplicaciones de Python, crear laboratorios de Linux y más consejos para administradores de sistemas

  2. Windows:¿cómo forzar la página de códigos/la configuración regional (diferente de la configuración regional del sistema Linux) para las aplicaciones Wine que no son Unicode?

  3. Depuración remota de un proceso de Linux desde Windows con gdb y gdbserver:¿qué se necesita exactamente en el lado de Windows?

  4. Uso del subsistema de Windows para Linux (WSL) de Sublime Text

  5. ¿Cómo configuro el tamaño del puntero del mouse X en el subsistema de Windows para Linux?

Cómo ejecutar aplicaciones y juegos de Windows en Linux usando Wine

La guía definitiva del subsistema de Windows para Linux (Windows WSL)

Usar Tailscale en Windows para conectarse en red más fácilmente con WSL2 y Visual Studio Code

Soporte oficial para la depuración remota de una aplicación .NET Core Linux en WSL2 desde Visual Studio en Windows

Depuración remota de una aplicación .NET Core Linux en WSL2 desde Visual Studio en Windows

Cómo instalar y configurar el subsistema de Windows para Linux