GNU/Linux >> Linux Esercitazione >  >> Linux

Scrittura e debug di applicazioni C++ Linux da Visual Studio usando il sottosistema Windows per Linux

Ho bloggato molte volte sul "sottosistema Windows per Linux" (noto anche come "Bash su Ubuntu su Windows"). La risposta a questa funzione di Windows è stata un po' divertente perché la gente prova a:

  • Riducilo a icona - "Oh, è solo Cygwin." (In realtà non lo è, sono gli effettivi binari elf di Ubuntu in esecuzione su un livello che astrae il kernel Linux.)
  • Progettalo - "Quindi è un contenitore Docker? Una VM?" (Di nuovo, è un intero sottosistema. Fa MOLTO più di quanto penseresti ed è più VELOCE di una VM.)

Ecco una semplice spiegazione di Andrew Pardoe:

1. Lo sviluppatore/utente utilizza una shell bash.
2. La shell bash viene eseguita su un'installazione di Ubuntu
3. L'installazione di Ubuntu viene eseguita su un sottosistema Windows. Questo sottosistema è progettato per supportare Linux.

È molto bello. WSL, francamente, mi ha tenuto in esecuzione Windows perché posso eseguire cmd, powershell o bash (o zsh o Fish). Puoi eseguire vim, emacs, tmux ed eseguire Javascript/node.js, Ruby, Python, C/C++, C# e F#, Rust, Go e altro. Ora puoi anche eseguire sshd, MySQL, Apache, lighttpd purché tu sappia che quando chiudi l'ultima console i servizi in background si spegneranno. Bash su Windows è per gli sviluppatori, non per le app del server in background. E, naturalmente, fai la tua strada verso la gloria.

Bash su Windows esegue i binari in modalità utente di Ubuntu forniti da Canonical. Ciò significa che le utilità della riga di comando sono le stesse di quelle eseguite in un ambiente Ubuntu nativo.

Volevo scrivere un'app console Linux in C++ usando Visual Studio in Windows. Come mai? Perché no? Mi piace VS.

Configurazione di Visual Studio 2017 per compilare ed eseguire il debug di app C++ su Linux

  • Ho la community di Visual Studio, gratuita per piccoli gruppi e open source.
    • Se lo hai già installato, assicurati di eseguire nuovamente il programma di installazione di Visual Studio (è veloce, non preoccuparti) e seleziona Linux:
  • Mi assicuro che il mio Windows 10 sia aggiornato e abbia Bash su Ubuntu installato.
    • La "Windows 10 Creators Edition" uscirà l'11 aprile, ma se sei un Windows Insider o utilizzi l'Assistente aggiornamento puoi ottenerla il 5 aprile. Include una serie di miglioramenti a Bash su Windows (note di rilascio)

Quindi, dalla shell bash assicurati di avere build-essential, il server di gdb e il server di openssh:

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

Quindi apri /etc/ssh/sshd_config con vi (o nano) come

sudo nano /etc/ssh/sshd_config

e per semplicità, imposta PasswordAuthentication a . Ricorda che non è un grosso problema di sicurezza come penseresti poiché il demone SSHD si chiude quando fa la tua ultima console e poiché il sottosistema di WSL deve funzionare bene con Windows, è al corrente di Windows Firewall e di tutte le sue regole esistenti, inoltre noi stai parlando anche localhost.

Ora genera le chiavi SSH e avvia manualmente il servizio:

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

Crea un'app Linux in Visual Studio (o apri un'app Makefile):

Assicurati di conoscere il tuo obiettivo (x64, x86, ARM):

In Gestione connessioni multipiattaforma di Visual Studio puoi controllare le tue connessioni SSH (e impostarne di con chiavi private, se lo desideri.)

Boom. Sto scrivendo C++ per Linux in Visual Studio su Windows... eseguendo, compilando ed eseguendo il debug sul sottosistema Linux locale

A proposito, per quelli di voi, come me, che amano i vostri piccoli computer Linux Raspberry Pi... questo è un ottimo modo per scrivere C++ anche per quei piccoli dispositivi. C'è anche un esempio di Blink in File | Nuovo progetto da avviare.

Inoltre, per quelli di voi che sono molto avanzati, smettete di usare Mingw-w64 e fate cose interessanti come compilare gcc 6.3 dal sorgente sotto WSL e fare in modo che VS lo usi! Non mi ero reso conto che il supporto C++ di Visual Studio ti consente di scegliere tra diversi compilatori C++ inclusi GCC e Clang.

Sponsor: Grazie a Redgate! Traccia ogni modifica al tuo database ! Scopri chi ha apportato modifiche, cosa ha fatto e perché, con SQL Source Control. Ottieni una cronologia completa delle versioni nel tuo sistema di controllo del codice sorgente. Vedi come.

Linux
  1. Kali sul sottosistema Windows per Linux

  2. Utilizzando Windows DLL da Linux

  3. Debug remoto di un processo Linux da Windows con gdb e gdbserver:cosa serve esattamente sul lato Windows?

  4. Utilizzo del sottosistema Windows per Linux (WSL) da Sublime Text

  5. Come imposto la dimensione del puntatore del mouse X nel sottosistema Windows per Linux

Come eseguire applicazioni e giochi Windows su Linux usando Wine

La guida definitiva al sottosistema Windows per Linux (Windows WSL)

Utilizzo di Tailscale su Windows per una rete più semplice con WSL2 e Visual Studio Code

Supporto ufficiale per il debug remoto di un'app Linux .NET Core in WSL2 da Visual Studio su Windows

Debug remoto di un'app Linux .NET Core in WSL2 da Visual Studio in Windows

Come installare e configurare il sottosistema Windows per Linux