GNU/Linux >> Belajar Linux >  >> Linux

Menulis dan men-debug aplikasi Linux C++ dari Visual Studio menggunakan Subsistem Windows untuk Linux

Saya telah membuat blog tentang "Subsistem Windows untuk Linux" (juga dikenal sebagai "Bash di Ubuntu pada Windows") berkali-kali sebelumnya. Tanggapan terhadap fitur Windows ini sedikit lucu karena orang-orang mencoba untuk:

  • Minimalkan - "Oh, itu hanya Cygwin." (Sebenarnya tidak, ini adalah binari elf Ubuntu yang sebenarnya berjalan pada lapisan yang mengabstraksi kernel Linux.)
  • Desainnya - "Jadi ini wadah buruh pelabuhan? Sebuah VM?" (Sekali lagi, ini adalah keseluruhan subsistem. JAUH lebih dari yang Anda kira, dan LEBIH CEPAT daripada VM.)

Berikut penjelasan sederhana dari Andrew Pardoe:

1. Pengembang/pengguna menggunakan shell bash.
2. Shell bash berjalan pada instalasi Ubuntu
3. Instalasi Ubuntu berjalan pada subsistem Windows. Subsistem ini dirancang untuk mendukung Linux.

Ini cukup keren. WSL, sejujurnya, membuat saya tetap menjalankan Windows karena saya dapat menjalankan cmd, PowerShell, OR bash (atau zsh atau Fish). Anda dapat menjalankan vim, emacs, tmux, dan menjalankan Javascript/node.js, Ruby, Python, C/C++, C# &F#, Rust, Go, dan banyak lagi. Sekarang Anda juga dapat menjalankan sshd, MySQL, Apache, lighttpd selama Anda tahu bahwa ketika Anda menutup konsol terakhir, layanan latar belakang akan dimatikan. Bash di Windows adalah untuk pengembang, bukan aplikasi server latar belakang. Dan tentu saja, Anda akan mendapatkan jalan menuju kejayaan.

Bash di Windows menjalankan binari mode pengguna Ubuntu yang disediakan oleh Canonical. Ini berarti utilitas baris perintah sama dengan yang berjalan dalam lingkungan asli Ubuntu.

Saya ingin menulis aplikasi Konsol Linux di C++ menggunakan Visual Studio di Windows. Mengapa? Kenapa tidak? Saya suka VS.

Menyiapkan Visual Studio 2017 untuk mengompilasi dan men-debug aplikasi C++ di Linux

  • Saya memiliki Komunitas Visual Studio, yang gratis untuk grup kecil dan sumber terbuka.
    • Jika Anda sudah menginstalnya, pastikan Anda menjalankan Visual Studio Installer lagi (cepat, jangan khawatir) dan pilih Linux:
  • Saya memastikan Windows 10 saya mutakhir dan telah menginstal Bash di Ubuntu.
    • "Windows 10 Creators Edition" akan dirilis pada 11 April, tetapi jika Anda adalah Windows Insider atau menggunakan Update Assistant, Anda bisa mendapatkannya pada 5 April. Ini mencakup banyak peningkatan pada Bash di Windows (catatan rilis)

Kemudian, dari bash shell pastikan Anda memiliki build-essential, server gdb, dan server openssh:

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

Kemudian buka /etc/ssh/sshd_config dengan vi (atau nano) seperti

sudo nano /etc/ssh/sshd_config

dan demi kesederhanaan, setel PasswordAuthentication untuk ya . Ingatlah bahwa ini bukanlah masalah keamanan yang besar seperti yang Anda pikirkan karena daemon SSHD ditutup ketika konsol terakhir Anda melakukannya, dan karena subsistem WSL harus berfungsi dengan baik dengan Windows, itu mengetahui rahasia Windows Firewall dan semua aturan yang ada, ditambah kami sedang berbicara localhost juga.

Sekarang buat kunci SSH dan mulai layanan secara manual:

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

Buat aplikasi Linux di Visual Studio (atau buka aplikasi Makefile):

Pastikan Anda mengetahui target Anda (x64, x86, ARM):

Di Manajer Koneksi Lintas Platform Visual Studio, Anda dapat mengontrol koneksi SSH Anda (dan mengaturnya dengan kunci pribadi, jika Anda mau.)

Ledakan. Saya sedang menulis C++ untuk Linux di Visual Studio di Windows...menjalankan, mengkompilasi, dan men-debug di Subsistem Linux lokal

BTW, bagi Anda, seperti saya, yang menyukai komputer kecil Linux Raspberry Pi Anda...ini adalah cara yang bagus untuk menulis C++ untuk perangkat kecil itu juga. Bahkan ada contoh Blink di File | Proyek Baru akan dimulai.

Juga, bagi Anda yang sangat mahir, berhenti menggunakan Mingw-w64 dan lakukan hal-hal keren seperti kompilasi gcc 6.3 dari sumber di bawah WSL dan minta VS menggunakannya! Saya tidak menyadari bahwa dukungan C++ Visual Studio memungkinkan Anda memilih di antara sejumlah kompiler C++ termasuk GCC dan Dentang.

Sponsor: Terima kasih kepada Redgate! Lacak setiap perubahan pada database Anda ! Lihat siapa yang membuat perubahan, apa yang mereka lakukan, &mengapa, dengan Kontrol Sumber SQL. Dapatkan riwayat versi lengkap di sistem kontrol sumber Anda. Lihat bagaimana.

Linux
  1. Menulis aplikasi Python, membangun lab Linux, dan tips lainnya untuk sysadmin

  2. Menggunakan Windows DLL dari Linux

  3. Tentukan versi OS, Linux dan Windows dari Powershell

  1. Windows – Bagaimana Memaksa Codepage/locale (berbeda dengan Lokal Sistem Linux) Untuk Aplikasi Wine Non-unicode?

  2. Men-debug proses Linux dari jarak jauh dari Windows dengan gdb dan gdbserver:apa sebenarnya yang dibutuhkan di sisi Windows?

  3. Menggunakan Windows Subsystem for Linux (WSL) dari Sublime Text

  1. Kali di Subsistem Windows untuk Linux

  2. Cara mengakses web server yang berjalan di WSL (Windows Subsystem for Linux) dari jaringan lokal

  3. Bagaimana cara mengatur ukuran penunjuk mouse X di Subsistem Windows untuk Linux