通常,當(dāng)我們開發(fā)Linux程序時(shí)有兩種方案:
在Linux上直接編寫程序并進(jìn)行運(yùn)行測(cè)試和調(diào)試 在Windows或Mac OS X上借助工具進(jìn)行遠(yuǎn)程開發(fā)雖然我自己是在Linux環(huán)境上直接進(jìn)行開發(fā)的,但也有許多的人是在Windows環(huán)境上從事開發(fā)工作的,如果離開自己熟悉的系統(tǒng)到陌生的環(huán)境上也許會(huì)影響到工作效率。
因此今天我們就來看下如何在Windows上使用Visual Studio 2019進(jìn)行Linux遠(yuǎn)程開發(fā)以及如何避免常見的陷阱。
Visual Studio的跨平臺(tái)開發(fā)功能簡(jiǎn)介
從visual studio 2017開始微軟推出了vs的跨平臺(tái)開發(fā)功能,你可以在vs中編輯代碼,隨后進(jìn)行跨平臺(tái)編譯和遠(yuǎn)程調(diào)試,將原先我們需要手動(dòng)完成的工作進(jìn)行了自動(dòng)化,大幅減輕了我們的負(fù)擔(dān)。其中支持的平臺(tái)包括Android和Linux,也就是我們今天要重點(diǎn)介紹的主角。
也許你會(huì)好奇,vs究竟是怎樣進(jìn)行遠(yuǎn)程開發(fā)的,雖然你不用了解這些知識(shí)也可以進(jìn)行開發(fā),但我還是希望能用兩分鐘做個(gè)簡(jiǎn)短的解釋。
vs進(jìn)行遠(yuǎn)程開發(fā)分為兩步:
創(chuàng)建遠(yuǎn)程環(huán)境的連接,隨后讓vs將遠(yuǎn)程環(huán)境中的系統(tǒng)頭文件同步到本地(也可以指定其他地方的頭文件,后面會(huì)講解),c++的代碼補(bǔ)全只需要頭文件即可。 當(dāng)代碼寫好后,選擇合適的遠(yuǎn)程環(huán)境,vs將目標(biāo)文件和代碼復(fù)制到遠(yuǎn)程環(huán)境的指定位置,接著根據(jù)你的配置進(jìn)行編譯。 隨后vs將會(huì)在console的gdb或gdbserver中運(yùn)行你的程序,在此期間你可以充分享受vs debugger帶來的高效和便利。經(jīng)過上述步驟之后你就可以在vs里調(diào)試自己編寫的跨平臺(tái)程序了。
使用vs2019進(jìn)行Linux遠(yuǎn)程開發(fā)
簡(jiǎn)介到此結(jié)束了,下面我們來看看在vs2019進(jìn)行Linux開發(fā)的圖文教程。在我們開始之前,首先要做點(diǎn)準(zhǔn)備工作:
安裝好vs2019,且勾選了c++ for Linux功能; 準(zhǔn)備一個(gè)可用的Linux遠(yuǎn)程環(huán)境,例如配置了靜態(tài)IP的Linux虛擬機(jī),并且已經(jīng)安裝好了GCC工具鏈以及openssh。做好準(zhǔn)備后我們就該進(jìn)入正題了。
創(chuàng)建項(xiàng)目
安裝好c++ for Linux功能后我們會(huì)在創(chuàng)建新項(xiàng)目的面板中看到Linux的選項(xiàng),如圖:

這里我們選擇了使用傳統(tǒng)的vs項(xiàng)目解決方案構(gòu)建的空白控制臺(tái)程序,后續(xù)的文章中你還可以看到如何創(chuàng)建cmake項(xiàng)目,這里暫且不提。
下面沒什么要說的,選擇項(xiàng)目的存儲(chǔ)位置,注意是本地的位置,遠(yuǎn)程機(jī)器的位置在后面會(huì)進(jìn)行配置:

點(diǎn)擊創(chuàng)建,我們的遠(yuǎn)程開發(fā)項(xiàng)目就創(chuàng)建成功了。
配置遠(yuǎn)程項(xiàng)目
vs不能編輯空項(xiàng)目的配置,所以我們先在項(xiàng)目中創(chuàng)建一個(gè)main.cpp,然后點(diǎn)擊頂部菜單:項(xiàng)目->屬性,你就能看到項(xiàng)目的配置界面了:

遠(yuǎn)程計(jì)算機(jī)是在調(diào)試中的遠(yuǎn)程連接管理器中添加的。這里一般不需要改動(dòng),除非你需要改變項(xiàng)目的類型或編譯結(jié)果的存放位置。如果有多個(gè)遠(yuǎn)程環(huán)境時(shí),也可以在這里進(jìn)行選擇。
調(diào)試部分提供了gdb和gdbserver,前者是讓vs在Linux上啟動(dòng)一個(gè)console,然后在其中運(yùn)行g(shù)db并返回輸出,如果你的Linux上的終端配置了彩色輸出,那么和遺憾vs并不認(rèn)識(shí)他們,會(huì)顯示成原始的字符串;使用gdbserver時(shí)會(huì)在遠(yuǎn)程啟用gdbserver,本地vs解析回傳的數(shù)據(jù)不會(huì)出現(xiàn)雜音。這里我們選擇了gdbserver,如果你發(fā)現(xiàn)無法打斷點(diǎn),那么參考微軟的建議,換回gdb方案:

接著是配置的重點(diǎn),首先是配置需要同步的遠(yuǎn)程環(huán)境的頭文件,有了這些文件vs才能對(duì)你的代碼進(jìn)行自動(dòng)補(bǔ)全和提示:
新聞熱點(diǎn)
疑難解答
圖片精選