午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 使用vs2019進行Linux遠程開發的方法步驟

使用vs2019進行Linux遠程開發的方法步驟

熱門標簽:申請400電話收費標 滴滴急救中心地圖標注 艾澤拉斯地圖標注 淘寶辦理400電話是多少 北海智能電銷機器人公司 外呼線路隨意切換嗎 福州語音電銷機器人招商 菏澤自動電銷機器人公司 網絡電話外呼系統開發

通常,當我們開發Linux程序時有兩種方案:

  1. 在Linux上直接編寫程序并進行運行測試和調試
  2. 在Windows或Mac OS X上借助工具進行遠程開發

雖然我自己是在Linux環境上直接進行開發的,但也有許多的人是在Windows環境上從事開發工作的,如果離開自己熟悉的系統到陌生的環境上也許會影響到工作效率。

因此今天我們就來看下如何在Windows上使用Visual Studio 2019進行Linux遠程開發以及如何避免常見的陷阱。

Visual Studio的跨平臺開發功能簡介

從visual studio 2017開始微軟推出了vs的跨平臺開發功能,你可以在vs中編輯代碼,隨后進行跨平臺編譯和遠程調試,將原先我們需要手動完成的工作進行了自動化,大幅減輕了我們的負擔。其中支持的平臺包括Android和Linux,也就是我們今天要重點介紹的主角。

也許你會好奇,vs究竟是怎樣進行遠程開發的,雖然你不用了解這些知識也可以進行開發,但我還是希望能用兩分鐘做個簡短的解釋。

vs進行遠程開發分為兩步:

  1. 創建遠程環境的連接,隨后讓vs將遠程環境中的系統頭文件同步到本地(也可以指定其他地方的頭文件,后面會講解),c++的代碼補全只需要頭文件即可。
  2. 當代碼寫好后,選擇合適的遠程環境,vs將目標文件和代碼復制到遠程環境的指定位置,接著根據你的配置進行編譯。
  3. 隨后vs將會在console的gdb或gdbserver中運行你的程序,在此期間你可以充分享受vs debugger帶來的高效和便利。

經過上述步驟之后你就可以在vs里調試自己編寫的跨平臺程序了。

使用vs2019進行Linux遠程開發

簡介到此結束了,下面我們來看看在vs2019進行Linux開發的圖文教程。在我們開始之前,首先要做點準備工作:

  1. 安裝好vs2019,且勾選了c++ for Linux功能;
  2. 準備一個可用的Linux遠程環境,例如配置了靜態IP的Linux虛擬機,并且已經安裝好了GCC工具鏈以及openssh。

做好準備后我們就該進入正題了。

創建項目

安裝好c++ for Linux功能后我們會在創建新項目的面板中看到Linux的選項,如圖:

這里我們選擇了使用傳統的vs項目解決方案構建的空白控制臺程序,后續的文章中你還可以看到如何創建cmake項目,這里暫且不提。

下面沒什么要說的,選擇項目的存儲位置,注意是本地的位置,遠程機器的位置在后面會進行配置:

點擊創建,我們的遠程開發項目就創建成功了。

配置遠程項目

vs不能編輯空項目的配置,所以我們先在項目中創建一個main.cpp,然后點擊頂部菜單:項目->屬性,你就能看到項目的配置界面了:

遠程計算機是在調試中的遠程連接管理器中添加的。這里一般不需要改動,除非你需要改變項目的類型或編譯結果的存放位置。如果有多個遠程環境時,也可以在這里進行選擇。

調試部分提供了gdbgdbserver,前者是讓vs在Linux上啟動一個console,然后在其中運行gdb并返回輸出,如果你的Linux上的終端配置了彩色輸出,那么和遺憾vs并不認識他們,會顯示成原始的字符串;使用gdbserver時會在遠程啟用gdbserver,本地vs解析回傳的數據不會出現雜音。這里我們選擇了gdbserver,如果你發現無法打斷點,那么參考微軟的建議,換回gdb方案:

接著是配置的重點,首先是配置需要同步的遠程環境的頭文件,有了這些文件vs才能對你的代碼進行自動補全和提示:

默認復制的路徑通常已經包含了Linux上大部分的頭文件,通常我們也不需要做更改。頭文件的同步發生在第一次構建項目成功后或添加遠程連接后手動同步。

接著是c/c++編譯器的選擇,也就是對gcc和g++編譯參數的配置,講解這些參數超出了我們的討論范圍,我們這里只需要選擇合適的c++標準版本:

這里我們選擇了c++17。其他設置與在Windows上進行開發時一樣,vs可以自動轉換成g++的參數,這里就不再贅述。

添加遠程環境

有了遠程環境我們才能同步頭文件或者進行調試運行。

在第一次編譯或調試你的項目時vs會自動讓你連接遠程環境,當然,我們推薦在調試->選項->跨平臺->連接管理器中進行設置:

填入你的遠程ip/域名,端口ssh默認為22,安全起見你需要修改成其他端口,這里方便演示使用了默認配置,密碼同上,你應該考慮使用更安全的ssh私鑰登錄。

登錄成功后這個連接就添加完成了,我們看到管理器下面還有一個遠程標頭管理器的設置項,這就是用來同步頭文件的:

點擊更新按鈕就會開始同步頭文件,這些文件會被緩存在本地,因為要從遠程一次性復制大量文件,所以可能會花費較長的時間。

這樣遠程環境就添加好了,可以開始寫代碼了。

本地編寫和遠程調試

至此你已經可以在vs中編寫面向Linux平臺的代碼了,自動補全可以正常工作:

可以看到Linux中的頭文件和結構體都已經可以識別了。如果你發現無法自動補全(通常發生在剛添加遠程連接或是項目設置發生了變化后),先試試關閉vs重新打開,如果沒用請嘗試刷新intellisense或重新同步頭文件。

在編輯結束后我們就能點擊調試按鈕運行我們的程序了:

注意,構建的體系架構必須是和遠程環境一致的,比如遠程環境是x64,這里可以選擇x64或x86,但是不能選擇arm,否則會報錯。

這是測試代碼,它將輸出當前Linux系統內核的版本:

#include <sys/utsname.h>
#include <iostream>
#include <cstdio>

int main()
{
  auto start = chrono::high_resolution_clock::now();
  utsname names;
  if (uname(&names) != 0) {
    std::perror("cannot get unames");
  }

  std::cout << "Linux kernel version: " << names.release << std::endl;
}

點擊調試->Linux 控制臺,會顯示一個可以交互的console,你可以在其中輸入內容或是看到程序的輸出:

程序運行成功。

避免踩坑

遠程編譯順利完成后,我們就可以接著利用vs debugger設置斷點,在斷點處查看變量,甚至對運行中的Linux進行動態性能分析了。

不過在此之前,還有一些坑需要提前踩掉。

中文亂碼

編碼問題帶來的麻煩永遠會被放在第一位,畢竟當人們看到預想的輸出實際上是一堆亂碼時總會不可避免得緊張起來。

眾所周知,編碼問題一直是老大難,特別是Windows上中文環境通常是GB18030或GBK,而Linux上統一為utf8時。

下面看個實際例子,通常我們的程序里只包含ASCII字符的話不容易產生問題,所以我們加上一點中文字符:

#include <sys/utsname.h>
#include <iostream>
#include <cstdio>
#include <string>

int main()
{
  utsname names;
  if (uname(&names) != 0) {
    std::perror("cannot get unames");
  }

  std::cout << "Linux kernel version: " << names.release << std::endl;
  std::cout << "輸入內容:";
  std::string input;
  std::cin >> input;
  std::cout << "你輸入了:" << input << std::endl;
}

對于上面的測試程序,我們添加了一點中文輸出信息,現在打開控制臺進行調試:

可以看到中文輸出變成了亂碼,我們輸入一些信息進去,這是運行結果:

可以看到,程序內寫入的中文發生了亂碼,而我們的輸入沒有。原因很簡單,輸入時實在linux的控制臺環境下,編碼默認是utf8的,所以我們的輸入被正確編碼,而源文件中的內容是GB18030的,所以在Linux控制臺(默認以utf8解碼數據并顯示)中會發生亂碼。

錯誤的原因知道了解決起來也就很簡單了,把源文件的編碼改成utf8就行,我們選擇最簡單的方法,在高級保存選項中修改編碼(這個菜單選項默認被隱藏,網上有很多介紹如何顯示它的方法的資料):

設置好后保存文件,現在文件的編碼已經被改為了utf8了。

現在運行修改后的程序:

運行結果也是正常的:

使用數學函數和第三方庫

在Linux上使用標準庫提供的數學函數也是一個老生常談的問題,根據你使用cpp還是c會有如下幾個情況:

  1. 使用cpp時,libstdc++依賴于libm,所以使用g++編譯你的程序時會自動鏈接數學函數庫;
  2. 使用c時,如果是sqrt(4)這樣的形式,較新的gcc提供了替換措施,不需要顯示鏈接libm;
  3. 接上一條,如果你的參數是個變量,那么編譯器可能會選擇需要你鏈接libm。

通常在Windows上我們無需操心這點,但在Linux上使用c語言時就很難忽略這個問題了。

因此保險起見,如果你正在編寫一個使用了數學函數的c程序,那么總是指定連接libm是沒錯的。

另外當你使用例如boost這類第三方庫時,也需要注意。在Windows上我們通常指定好附加包含目錄和附加庫目錄即可正常編譯,但是Linux上必須明確指定鏈接庫的名字,因此我們在項目屬性中進行設置。

在Linux上我們可以使用pkg-config來減輕上述的重復勞動,而在vs中我們不能直接利用這一工具,當你的項目使用了大量第三方庫時就會成為不小的麻煩,如果想要解決這一問題,可以參考后續文章里我會介紹的vs+cmake構建項目。

下面我們給例子加上一點boost chrono的功能測試,在Linux上需要指定-lboost_chrono,這是設置:

下面是完整的代碼:

#include <sys/utsname.h>
#include <iostream>
#include <cstdio>
#include <string>
#include <boost/chrono.hpp>

int main()
{
  namespace chrono = boost::chrono;
  auto start = chrono::high_resolution_clock::now();
  utsname names;
  if (uname(&names) != 0) {
    std::perror("cannot get unames");
  }

  std::cout << "Linux kernel version: " << names.release << std::endl;
  std::cout << "輸入內容:";
  std::string input;
  std::cin >> input;
  std::cout << "你輸入了:" << input << std::endl;
  auto counter = chrono::duration_cast<chrono::milliseconds>(chrono::high_resolution_clock::now() - start);
  std::cout << "程序運行了:" << counter.count() << "ms\n";
}

點擊運行按鈕,程序就能正常調試了,否則會報錯:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:三沙 延安 丹東 混顯 滄州 賀州 亳州 資陽

巨人網絡通訊聲明:本文標題《使用vs2019進行Linux遠程開發的方法步驟》,本文關鍵詞  使用,vs2019,進行,Linux,遠程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用vs2019進行Linux遠程開發的方法步驟》相關的同類信息!
  • 本頁收集關于使用vs2019進行Linux遠程開發的方法步驟的相關信息資訊供網民參考!
  • 推薦文章
    99精品久久久久| 熟妇人妻va精品中文字幕| 午夜视频一区二区| 国产福利在线导航| 国产精品成人久久久久| 国产91精品一区二区| 簧片在线免费看| 亚洲精品永久免费精品| 久久精品国内一区二区三区| 91看片在线免费观看| 精品国产欧美成人夜夜嗨| 日韩在线a电影| 777久久久精品一区二区三区| 在线观看视频91| 日韩精品久久久久久久| 欧美日韩高清在线一区| 在线免费观看成人短视频| 国模人体一区二区| 日本成人在线免费视频| 美日韩精品免费视频| 国产精品一区在线观看乱码 | 中文字幕一区二区三区在线播放 | 日韩亚洲在线观看| 国产精品久久久99| 一本一道精品欧美中文字幕| 一级黄色在线播放| 国产精品免费一区二区| 日韩中文字幕网| 亚洲欧洲国产日韩| 国产一区二区视频在线观看免费| 久久99热只有频精品91密拍| 国产精品久久久久久妇女6080| 欧美激情aaa| 一区二区三区四区精品| 蜜臀a∨国产成人精品| 午夜免费看视频| 亚洲天堂av网| 久久免费精品国产久精品久久久久| 私库av在线播放| 欧美人与物videos另类| 亚洲人成77777在线观看网| 国产精品色呦呦| 中文字幕乱码一区二区| 911av视频| 国产精品丝袜久久久久久不卡| 亚洲日本韩国一区| 久久午夜免费视频| 日韩av.com| av成人观看| 国产视频精品va久久久久久| 亚洲欧美乱综合| 欧美一级片免费| 国产精品久久久久久久无码| 2014国产精品| 日韩成人在线视频| 国产美女精品人人做人人爽| 男人的天堂一区二区| 中文字幕 欧美日韩| 亚洲精品一区二区三区樱花| 欧美激情乱人伦一区| 欧美群妇大交群中文字幕| 亚洲精品久久久久久动漫器材一区| 欧美一级高清免费播放| 91福利精品视频| 99热99精品| 亚洲av无码乱码国产精品久久| 91麻豆精品久久毛片一级| 无码中文字幕色专区| 国产成人精品999| 91精品国产欧美一区二区18| 久久综合精品国产一区二区三区| 无码人妻精品一区二区蜜桃色欲| 国产麻豆xxxvideo实拍| 黄色一级视频片| 97中文在线观看| 在线视频日本亚洲性| 91福利精品第一导航| 中文字幕一区二区三区不卡在线| 人人精品人人爱| 中文字幕一区二区三区四区视频 | 国产精品沙发午睡系列990531| 秋霞av鲁丝片一区二区| 男人的天堂成人| 国产日韩综合一区二区性色av| 精品第一国产综合精品aⅴ| 一本色道久久综合亚洲精品按摩| 99国产精品99久久久久久| 三级久久三级久久久| 男人午夜免费视频| 久久久无码一区二区三区| 91久久免费视频| 九九热免费精品视频| 亚洲人成人77777线观看| 奇米影视首页 狠狠色丁香婷婷久久综合| 国内精久久久久久久久久人| 日韩午夜av电影| 欧美日本免费一区二区三区| 午夜精品在线视频一区| 亚洲天堂2016| 综合自拍亚洲综合图不卡区| 国产真实乱偷精品视频免| 日韩综合一区二区| 无码精品在线观看| 91av久久久| 久久精品国产亚洲AV无码麻豆 | 日韩美女黄色片| 国产区在线观看视频| 国产一级二级三级视频| 久久久99999| 国产午夜视频在线| 中文字幕一区二区人妻电影| 久久精品视频8| 少妇人妻丰满做爰xxx| av资源在线免费观看| 手机在线中文字幕| 午夜婷婷在线观看| 成人黄色三级视频| 国产精品一区二区三区在线免费观看 | 2021国产精品久久精品| 国产精品12区| 色综合久久悠悠| 国产精品免费看片| 亚洲国产一区二区视频| 精品久久久视频| 69久久夜色精品国产69蝌蚪网| 日韩区在线观看| 亚洲精品在线免费播放| 中文字幕免费精品一区| 免费av一区二区| 亚洲欧美日韩精品久久| 久久久久久久999| 热门国产精品亚洲第一区在线| 91精品国产99| 国产伦精品一区二区| 在线视频一区观看| 日韩av三级在线| 粉嫩av懂色av蜜臀av分享| 国产又粗又长又黄的视频| 伊人365影院| 四季av日韩精品一区| 岛国一区二区三区| 亚洲人午夜精品天堂一二香蕉| 欧美成人精品福利| 欧美黄色片在线观看| 欧美最顶级丰满的aⅴ艳星| 91福利视频导航| 免费成人深夜夜行网站视频| 亚洲欧美久久久久| 国产jk精品白丝av在线观看| 久久久久久久久久久网| 六月婷婷中文字幕| 99精品视频中文字幕| 欧美三级一区二区| 在线日韩日本国产亚洲| 欧美日韩国产第一页| 国产精品视频久久久| 久久久久久久久网| 羞羞的视频在线| 国产精久久久久久| 日韩av中文字幕一区二区三区| 久久新电视剧免费观看| 欧美一区二区三区婷婷月色 | 性高潮视频在线观看| 99精品一区二区三区| 欧美性生交片4| 欧美激情手机在线视频 | 天堂av在线网站| 91久久国产视频| 成人av免费观看| 日韩美女av在线| 国产伦精品一区二区三毛| 亚洲精品久久久久久宅男| 狠狠躁夜夜躁人人爽视频| 97精品久久久久中文字幕| 欧美一级高清片| 国产区精品在线观看| 久草福利视频在线| 国产剧情精品在线| 一区二区三区免费| 久久久精品一区| 欧洲久久久久久| 天天做天天干天天操| 久久久国产精品黄毛片| 久久久久国内| 欧美日韩国产精品一区二区三区四区| 久久精品国产成人精品| 宅男一区二区三区| 美女扒开腿免费视频| 丝袜亚洲另类丝袜在线| 欧美图区在线视频| 国产欧美在线一区二区| 免费视频91蜜桃| 国产乱子伦一区二区三区国色天香| 欧洲色大大久久| 国产精品久久久精品| 成人日韩在线视频| 精品国自产在线观看| 一本色道a无线码一区v| 国产精品亚洲аv天堂网| japanese在线观看| 姝姝窝人体www聚色窝| 日韩欧美自拍偷拍| 欧美精品欧美精品| 超碰手机在线观看| 自拍偷自拍亚洲精品播放| 欧洲中文字幕国产精品| 手机av在线网| 亚洲欧美一区二区三| 欧美日韩三级视频| 成人免费在线视频网站| 久久精品国产亚洲AV熟女| 老司机精品福利视频| 日韩中文在线视频| 午夜一级免费视频| 成人激情文学综合网| 日本亚洲欧洲色α| 国产一区999| av高清一区二区| 在线观看欧美黄色| 亚洲啪av永久无码精品放毛片| 亚洲h动漫在线| 国产精品久久久久久影视| 天天干天天操天天操| 日韩精品一线二线三线| 亚洲制服丝袜av| sm捆绑调教视频| 国产精品va在线播放| 国内不卡的二区三区中文字幕| 久久av高潮av| 国产欧美日韩精品一区| 亚洲国产欧美不卡在线观看| 香蕉视频国产在线| 亚洲自拍高清视频网站| 欧美一区二区黄片| 国产成人精品日本亚洲11 | 欧美日韩国产精品一卡| 色一区av在线| 毛片在线视频播放| 亚洲欧洲另类国产综合| 又大又硬又爽免费视频| 亚洲福利视频久久| 丰满肉嫩西川结衣av| 男女h黄动漫啪啪无遮挡软件| 色哦色哦哦色天天综合| 日本福利片在线观看| 成人做爽爽免费视频| 免费观看a视频| 1区1区3区4区产品乱码芒果精品| 亚洲精品喷潮一区二区三区| 91丝袜美腿美女视频网站| 老牛影视av牛牛影视av| 国产精品美乳在线观看| 久久免费国产| 中文字幕最新精品| 欧美一区二区三区成人精品| 色婷婷久久久亚洲一区二区三区 | 精品国内片67194| 少妇人妻丰满做爰xxx| 97精品一区二区三区| 黄色一级片免费看| 国产精品444| 精品一区二区精品| 久久黄色一级视频| 亚洲主播在线播放| 亚洲av无一区二区三区久久| 中文在线免费一区三区高中清不卡| 欧美在线一二三区| 中文字幕在线永久| 91麻豆国产自产在线观看| 玛丽玛丽电影原版免费观看1977 | 欧美日韩二区三区| 中国一级特黄视频| 免费看欧美黑人毛片| 欧美成人黄色小视频| 中文乱码免费一区二区| 少妇精品无码一区二区免费视频 | 亚洲经典一区二区| 99精彩视频| 日本一区二区三区在线观看| caoporm在线视频| 欧美一区二区三区视频免费播放 | 亚洲 欧美 激情 另类| 国产日韩三区| 欧美日韩在线免费视频| 日韩黄色免费网站| 成人在线播放网址| 精品国内二区三区| 亚洲精品无遮挡| 日韩精品久久久毛片一区二区| 污污视频在线免费看| 黑鬼大战白妞高潮喷白浆| 欧美精品免费视频| 亚洲欧美另类在线视频| 免费一区二区三区在线观看| 欧美亚洲另类制服自拍| 666欧美在线视频| 国产福利一区二区三区视频| 精品成人无码一区二区三区| 中文字幕中文字幕在线中心一区 | 日韩精品视频中文在线观看| 国产一区高清在线| 日韩国产成人无码av毛片| 日韩电影第一页| 蜜臂av日日欢夜夜爽一区| 久久无码人妻一区二区三区| 尤物tv国产一区| www.av在线.com| 一本色道久久88亚洲精品综合| 午夜国产精品一区| 激情深爱一区二区| 人人干人人干人人干| 久久久水蜜桃| 91精品国产黑色紧身裤美女| 亚洲欧美黄色片| 激情成人在线观看| 亚洲国产成人精品久久久国产成人一区| 西西44rtwww国产精品| 日韩中文不卡| 欧美精品乱人伦久久久久久| 国产999精品久久久久久绿帽| 日韩精品1区2区| 亚洲一区二区蜜桃| 尤物九九久久国产精品的特点 | 国产成人在线一区| 欧美日韩精品一区二区三区 | 999精品久久久| 国产在线精品一区二区三区| 亚洲一区在线观看免费 | 亚洲免费视频网站| 亚洲影视在线播放| 丁香网亚洲国际| 国产免费看av| 国产美女精品在线观看| 精品一区二区三区四区| 高潮精品一区videoshd| 亚洲色成人一区二区三区小说| 亚洲一区二区国产| 国产精品污www在线观看| 欧美亚洲另类小说| 久久成人激情视频| 熟妇无码乱子成人精品| 日韩免费毛片视频| 五月天婷亚洲天综合网鲁鲁鲁| 欧美最顶级丰满的aⅴ艳星| 伊人一区二区三区久久精品| 欧美色另类天堂2015| 免费看日韩精品| 日韩网站在线播放| 国产精品免费观看高清| 日韩av最新在线观看| 91视视频在线直接观看在线看网页在线看| 黄色片视频在线播放| 99久久婷婷国产综合精品电影| 欧美丰满熟妇bbb久久久| 欧美激情视频在线免费观看 欧美视频免费一| 日本不卡视频在线观看| 极品人妻一区二区| 99视频日韩| 91麻豆精品国产自产在线观看一区 | 美国十次了思思久久精品导航| 91精品小视频| 日本一区免费| 97精品久久久中文字幕免费| 亚洲国产一区二区视频| 中文字幕乱码人妻二区三区| 亚洲人辣妹窥探嘘嘘| 99re在线观看视频| 日韩在线观看免费高清| 欧美一区二区三区色| 99国内精品久久| 日韩精品成人在线| 可以看污的网站| 久久久久久久久久久久久久一区 | 精品成人av一区二区三区| 国产成人久久久| 欧美性生活影院| 五月天婷婷激情网| 天堂在线中文在线| 国产精品视频在线观看| 欧美日韩在线播| 蜜桃视频一区二区三区| 免费欧美一级片| 蜜桃视频日韩| 久久久成人精品| 亚洲综合视频网| 精品人妻少妇AV无码专区| 日韩精品视频一区二区| 欧美日本国产精品| 精品国产一区久久久| 夜夜嗨av一区二区三区中文字幕| 亚洲国产一二三区| 中文字幕第69页| 黄色www网站| 国产精品国模大尺度私拍| 日韩欧美亚洲另类制服综合在线| 亚洲成人av综合| 精品人妻伦一二三区久| 色乱码一区二区三在线看| 日韩一区二区在线视频| 亚洲精品写真福利| 久久国产视频网| 国产亚洲欧美日韩高清| 欧美一级片在线免费观看| 亚洲美女自拍视频| 日韩欧美国产视频| 日本一区免费视频| 不卡一区中文字幕| 麻豆国产精品一区二区三区 | www.超碰在线观看| 五月天综合婷婷|