使用Windows的Linux子系統搭建嵌入式開發環境

  親,都9102年了,還在用VMware跑嵌入式交叉編譯鏈嗎?

  北京時間2019年6月13日,Windows 10發佈預覽版本18917。版本的主要功能是Linux子系統(windows sub-system linux version 2, 後文簡稱wsl2)進行了升級,從網上的描述中可以看出,新版的wsl聲稱引入了完整的Linux內核,意味着我們可以用它來跑docker和i686架構程序(前者在微軟官方頁面中進行了展示,後者是wsl1所不支持的,因而在此之前嵌入式開發還是隻能跑虛擬機或雙系統,因爲嵌入式編譯鏈32位的居多,比如我使用的hisi的編譯鏈)。

  好,話不多說,我們開始來搭建環境,首先你需要加入預覽計劃(截至2019年10月,消費者版本還是184xx版本,無法升級爲18917),加入方式如下:

  首先是加入預覽體驗計劃:

  重啓完成後需要把更新頻率調爲快,然後去更新界面刷新,就會自動安裝預覽版本OS了:

  當界面顯示“Insider Preview” “vb_release”等字樣時,你就快吃上預覽版了。

  這個漫長的過程結束之後,我們啓用Linux子系統功能,這個步驟大家參考網上的教程即可,例如如何在 Windows 10 中安裝 WSL2 的 Linux 子系統
  我引用的這篇文章大家參考第一步和第二步即可,值得一提的是其中有兩個地方要說明一下,一是Ubuntu安裝好要先運行,方式如下:

還有就是有一行語句他寫錯了

wsl --set-version Ubuntu> 2

應該是沒有這個“>”,即應爲

wsl --set-version Ubuntu 2

  待安裝好Ubuntu後,我們就可以試着安裝交叉編譯的工具鏈並且試着編譯了(我使用vscode打開的終端進行後續操作,vscode的默認終端我也設置爲wsl了,這樣會方便一些):

然後安裝32位的庫和宿主的工具,使用以下命令:

#宿主開發環境
sudo apt install -y build-essential
#32位庫
sudo apt install -y lib32ncurses5 lib32z1
sudo apt install -y lib32stdc++6

當然,你也可以先行替換軟件包的源爲阿里雲,使用下面的語句即可:

sudo sed -i "s/archive\.ubuntu\./mirrors\.aliyun\./g" /etc/apt/sources.list
sudo apt update

  接下來是最重要的一步,爲Ubuntu開啓32位支持,使用下面的語句。然後在Windows上重啓一項服務(相當於重啓了Ubuntu,圖片中重啓方式二選一)
    (ps:似乎其實不需要重啓,退出所有wsl的bash就行了)

sudo dpkg --add-architecture i386

然後就是編譯成功的好消息:

編譯出來的程序,放到機器上就可以運行,下面是我測試截圖

使用wsl還有一個好處!就是我們可以使用同步代碼在linux裏面調試,比如我下面的操作

進一步,我們可以在Ubuntu中調試(由於vscode+wsl支持遠程調試,因此說不定你可以使用ide在wsl裏調試好代碼,然後移植到嵌入式平臺)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章