<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          WSL:在 Windows 系統(tǒng)中開(kāi)發(fā) Linux 程序的又一神器

          共 4478字,需瀏覽 9分鐘

           ·

          2021-07-22 10:14


          • 什么是 WSL?

          • 什么是 WSL2?

          • 激活 WSL 服務(wù)

          • 安裝 Ubuntu-18.04 操作系統(tǒng)

          • 通過(guò) ssh 遠(yuǎn)程登錄

          • 編譯 Hello,World!

          作為一名嵌入式軟件開(kāi)發(fā)工程師,在 Linux 系統(tǒng)下寫(xiě)代碼、編譯、調(diào)試是避免不了的事情。

          但是很少有同學(xué)會(huì)直接拿一臺(tái) Linux 真機(jī)來(lái)作為工作平臺(tái),除非是那種利用遠(yuǎn)程服務(wù)器來(lái)編譯的場(chǎng)景。

          更普遍的使用場(chǎng)景是:在一臺(tái) Windows/Mac 系統(tǒng)中,安裝虛擬機(jī),然后在虛擬機(jī)中安裝 Linux 操作系統(tǒng)。

          Windows 系統(tǒng)中常用的虛擬機(jī)有:Virtualbox、VMWareMac 系統(tǒng)中一般都是用 Parallels Desktop,速度確實(shí)比較快!

          在很久以前,我參與的項(xiàng)目主要是物聯(lián)網(wǎng)網(wǎng)關(guān),只需要編譯 Linux 系統(tǒng)下的可執(zhí)行程序,因此在日常工作中,都是直接在 Ubuntu 虛擬機(jī)中敲代碼(編輯器:VSCodeSubLime)、編譯、調(diào)試。

          后來(lái)需要開(kāi)發(fā)跨平臺(tái)的應(yīng)用,開(kāi)發(fā)模式就變成了:

          1. 敲代碼:indows 系統(tǒng)中中的 Visual Studio;

          2. 編譯 Windows 應(yīng)用程序: 直接用 Visual Studio 中的 VC 編譯器來(lái)編譯;

          3. 編譯 Linux 應(yīng)用程序:通過(guò)遠(yuǎn)程部署的方式,把代碼同步到 Ubuntu 虛擬機(jī)中,然后遠(yuǎn)程編譯、調(diào)試;

          這樣的開(kāi)發(fā)模式是屬于比較常見(jiàn)的,只不過(guò)每次 Ubuntu 虛擬機(jī)比較耗費(fèi)資源,啟動(dòng)比較慢而已!

          編寫(xiě)跨平臺(tái)的代碼,使用 CMake 工具來(lái)管理構(gòu)建過(guò)程,也是非常方便的。

          之前寫(xiě)過(guò) 2 篇相關(guān)的文章:

          《使用 cmake 來(lái)搭建跨平臺(tái)的應(yīng)用程序框架:C語(yǔ)言版本》

          《使用 cmake 來(lái)搭建跨平臺(tái)的應(yīng)用程序框架:C++版本》

          2 篇總結(jié),算是一個(gè)簡(jiǎn)單的工程模板吧。

          平時(shí)如果我需要寫(xiě)一些簡(jiǎn)單的 Demo 發(fā)給別人,我就會(huì)直接復(fù)制一下,然后添加上演示代碼就可以了。

          說(shuō)了這么多,都是在描述跨平臺(tái)開(kāi)發(fā)的工作場(chǎng)景,或者說(shuō)是開(kāi)發(fā)模式。

          其實(shí),在 Windows 系統(tǒng)中,還有一種安裝 Linux 系統(tǒng)的方式,這就是 WSL/WSL2

          下面,我就把自己的安裝、配置過(guò)程與大家分享一下!

          什么是 WSL?

          這部分沒(méi)有什么好掰扯的,直接從微軟官網(wǎng)摘錄如下:

          WSL(Windows Subsystem for Linux)Windows 系統(tǒng)中的一個(gè)子系統(tǒng),在這個(gè)子系統(tǒng)上可以運(yùn)行 Linux 操作系統(tǒng)。

          可以讓開(kāi)發(fā)人員直接在 Windows 上按原樣運(yùn)行 GNU/Linux 環(huán)境(包括大多數(shù)命令行工具、實(shí)用工具和應(yīng)用程序),且不會(huì)產(chǎn)生傳統(tǒng)虛擬機(jī)或雙啟動(dòng)設(shè)置開(kāi)銷。

          什么是 WSL2?

          WSL2 是適用于 LinuxWindows 子系統(tǒng)體系結(jié)構(gòu)的一個(gè)新版本,它是對(duì)基礎(chǔ)體系結(jié)構(gòu)的一次重大改造。

          它使用虛擬化技術(shù)和 Linux 內(nèi)核來(lái)實(shí)現(xiàn)其新功能,主要目標(biāo)是提高文件系統(tǒng)性能和添加完全的系統(tǒng)調(diào)用兼容性。

          個(gè)人理解:

          WSL并不是一個(gè)真正的 Linux 操作系統(tǒng),僅僅是 Linux 應(yīng)用程序與 Windows 操作系統(tǒng)之間的一個(gè)適配層。

          在這個(gè)適配層之上,可以運(yùn)行 Linux 應(yīng)用程序,有點(diǎn)類似于以前的 cygwin 的方式。

          WSL2:它就是一個(gè)虛擬機(jī),類似于 Vitual Box,在這個(gè)虛擬機(jī)之上,運(yùn)行一個(gè)完整的 Linux 操作系統(tǒng)。

          相對(duì)于 Virtual Box、VMWare 來(lái)說(shuō),WSL2提供更全面的兼容性、與 Windows 系統(tǒng)的互操作性更好、運(yùn)行速度更快、占用系統(tǒng)資源更少。

          激活 WSL 服務(wù)

          Win+X, 啟動(dòng) Windows PowerShell (管理員),注意:是帶有管理員的這個(gè)?。?/p>

          或者直接在搜索窗口中輸入 Power, 然后選擇以管理員方式運(yùn)行:

          PowerShell 的窗口是:

          可以把 PowerShell 理解成升級(jí)版的、功能更強(qiáng)勁的 cmd。

          PowerShell 窗口中,輸入如下指令來(lái)激活 WSL 服務(wù):

          Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

          此時(shí),提示需要重啟系統(tǒng)(不用說(shuō),肯定選擇 Y):

          電腦重啟之后,按下 Win + R,調(diào)出命令輸入窗口。輸入指令 appwiz.cpl。

          點(diǎn)擊左側(cè)的 【啟動(dòng)或關(guān)閉 Windows 功能】

          彈出下面這個(gè)窗口:

          可以看到:【適用于 Linux 的 Windows 子系統(tǒng)】這一欄已經(jīng)被勾選了,說(shuō)明 WSL 服務(wù)已經(jīng)啟動(dòng)。

          接下來(lái)要做的事情,就是安裝 Ubuntu 操作系統(tǒng)。

          安裝 Ubuntu-18.04 操作系統(tǒng)

          啟動(dòng) 【Windows Store】:

          在右上角的搜索欄中,輸入:Ubuntu

          我們這里就選擇 Ubuntu-18.04 吧,這也是我工作中使用的版本。

          下載速度挺快的:

          安裝完成之后,點(diǎn)擊【啟動(dòng)】按鈕:

          第一次打開(kāi)速度稍微慢一些,大約 1 分鐘左右吧,提示設(shè)置用戶名、密碼,然后就進(jìn)入我們熟悉的窗口了:

          這樣,Ubuntu-18.04 系統(tǒng)就安裝好了!

          我一般在系統(tǒng)安裝之后,會(huì)把 root 用戶的密碼也設(shè)置一下,以后總會(huì)需要使用 root 身份來(lái)登錄系統(tǒng)的。

          $ sudo passwd

          系統(tǒng)安裝之后,第一件事情一般都是更換軟件源。

          可以選擇阿里、清華或者中科大的源,這里就直接使用清華的軟件源:

          $ cd /etc/apt
          $ sudo cp sources.list source.list.bak
          $ sudo vim sources.list

          把下面軟件源復(fù)制、粘貼進(jìn)去:

          deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
          # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
          deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
          # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
          deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
          # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
          deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
          # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

          保存之后,執(zhí)行更新指令:

          $ sudo apt-get update
          $ sudo apt-get upgrade

          這個(gè)步驟,請(qǐng)同學(xué)們耐心等待,稍安勿躁。出現(xiàn)提示輸入,選擇 Y 就行了。

          通過(guò) ssh 遠(yuǎn)程登錄

          如果您覺(jué)得這個(gè)黑乎乎的窗口有點(diǎn)丑,那么可以通過(guò) Windows 系統(tǒng)中的 Xshell 工具來(lái)遠(yuǎn)程登錄(ssh)。

          為了這個(gè)目的,我們需要在 Ubuntu-18.04 中重新安裝 sshd 服務(wù):

          $ sudo apt purge openssh-server
          $ sudo apt install openssh-server

          安裝完畢之后,需要修改配置文件,以運(yùn)行遠(yuǎn)程登錄:

          $ sudo vim  /etc/ssh/sshd_config

          修改1:把 13 行的 #Port 22 改為 Port 22。

          修改2:把 32 行的 #PermitRootLogin prohibit-password 改為 PermitRootLogin yes

          修改3:把 56 行的 #PasswordAuthentication yes 改為 PasswordAuthentication yes。

          修改之后,啟動(dòng) sshd 服務(wù)

          $ sudo service ssh restart

          此時(shí),啟動(dòng) Windows 系統(tǒng)中的 Xshell 來(lái)遠(yuǎn)程登錄一下,主機(jī)名只需要填寫(xiě):localhost 即可:

          建立鏈接的時(shí)候,需要保存秘鑰:

          然后輸入用戶名和密碼:

          如果出現(xiàn)下面這個(gè)提示,先不用理會(huì)它,直接選擇【】,這是與 Linux 的圖形窗口相關(guān)的,后面會(huì)解釋。

          此時(shí),就可以在 Xshell 中愉快的操作 Ubuntu 的命令行窗口了。

          是不是感覺(jué)少了點(diǎn)什么東西?那些 Desktop、DocumentsPicture 等默認(rèn)文件夾怎么都不見(jiàn)了?

          這個(gè)問(wèn)題,后面在演示 WSL2 的時(shí)候就見(jiàn)分曉了!

          編譯 Hello,World!

          最后,我們來(lái)編譯一個(gè)應(yīng)用程序。首先安裝 gcc 編譯器:

          $ sudo apt-get install gcc

          再寫(xiě)一個(gè) hello.c 文件:

          #include <stdio.h>

          int main()
          {
          printf("Hello,World! \n");
          return 0;
          }

          然后編譯、執(zhí)行:

          ccc@DESKTOP-5LT2QM5:~/tmp$ gcc hello.c -o hello
          ccc@DESKTOP-5LT2QM5:~/tmp$ ./hello
          Hello,World!

          完美!


          ------ End ------

          接下來(lái)要介紹的就是 WSL2 以及 圖形窗口了,過(guò)程我已經(jīng)驗(yàn)證完畢,等整理好之后再分享給大家,謝謝!

          推薦閱讀

          【1】C語(yǔ)言指針-從底層原理到花式技巧,用圖文和代碼幫你講解透徹
          【2】一步步分析-如何用C實(shí)現(xiàn)面向?qū)ο缶幊?/a>
          【3】原來(lái)gdb的底層調(diào)試原理這么簡(jiǎn)單
          【4】?jī)?nèi)聯(lián)匯編很可怕嗎?看完這篇文章,終結(jié)它!

          其他系列專輯精選文章、C語(yǔ)言Linux操作系統(tǒng)、應(yīng)用程序設(shè)計(jì)、物聯(lián)網(wǎng)


          星標(biāo)公眾號(hào),能更快找到我!


          瀏覽 69
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色AV小说在线观看 | 欧美AAAAAAAAAA特级 | 亚洲无码视频播放 | 国产精品国产三级国产AⅤ原创 | www.逼特逼视频 |