成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

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

使用vs2019進行Linux遠程開發(fā)的方法步驟

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

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

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

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

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

Visual Studio的跨平臺開發(fā)功能簡介

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

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

vs進行遠程開發(fā)分為兩步:

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

經(jīng)過上述步驟之后你就可以在vs里調(diào)試自己編寫的跨平臺程序了。

使用vs2019進行Linux遠程開發(fā)

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

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

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

創(chuàng)建項目

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

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

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

點擊創(chuàng)建,我們的遠程開發(fā)項目就創(chuàng)建成功了。

配置遠程項目

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

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

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

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

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

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

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

添加遠程環(huán)境

有了遠程環(huán)境我們才能同步頭文件或者進行調(diào)試運行。

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

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

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

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

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

本地編寫和遠程調(diào)試

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

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

在編輯結(jié)束后我們就能點擊調(diào)試按鈕運行我們的程序了:

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

這是測試代碼,它將輸出當前Linux系統(tǒng)內(nèi)核的版本:

#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;
}

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

程序運行成功。

避免踩坑

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

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

中文亂碼

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

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

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

#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 << "輸入內(nèi)容:";
  std::string input;
  std::cin >> input;
  std::cout << "你輸入了:" << input << std::endl;
}

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

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

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

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

設(shè)置好后保存文件,現(xiàn)在文件的編碼已經(jīng)被改為了utf8了。

現(xiàn)在運行修改后的程序:

運行結(jié)果也是正常的:

使用數(shù)學函數(shù)和第三方庫

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

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

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

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

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

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

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

下面是完整的代碼:

#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 << "輸入內(nèi)容:";
  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";
}

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《使用vs2019進行Linux遠程開發(fā)的方法步驟》,本文關(guān)鍵詞  使用,vs2019,進行,Linux,遠程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用vs2019進行Linux遠程開發(fā)的方法步驟》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用vs2019進行Linux遠程開發(fā)的方法步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    一个人免费视频www在线观看| 视频在线不卡| 国产主播一区二区三区| av中文字幕在线观看第一页| 欧美性jizz18性欧美| 尤物在线免费视频| 国产freexxxx性播放麻豆| 538国产精品一区二区免费视频| 日韩高清一级片| 日韩黄色一级视频| 国产人与zoxxxx另类91| 国产调教在线| 国产精品久久中文| 色综合小说天天综合网| 欧美人禽zoz0强交| 影音先锋男人资源站| 亚洲av午夜精品一区二区三区| 亚洲国产精品日韩专区av有中文| 国产一区二区视频免费观看| 国产女人在线观看| 久久草av在线| 欧美韩一区二区| 免费看日本黄色片| 人妻无码中文久久久久专区| 色婷婷综合久久久中文一区二区| gratisvideos另类灌满| 成年网站视频| 亚洲成a人片777777久久| 韩国美女主播一区| 欧美日韩亚洲视频| 国产suv精品一区二区33| 黄色小说在线播放| www.4hu95.com四虎| 91国偷自产一区二区三区的观看方式| 精品毛片一区二区三区| 亚洲一区日韩| 一区二区三区播放| 久久精品视频va| 国产一级二级在线观看| 欧美黑人一级片| 手机看片日韩国产| 夜夜爽久久精品91| 精品久久久久久亚洲精品| 56国语精品自产拍在线观看| h片在线免费| 久久尤物电影视频在线观看| 欧美大胆视频| 19禁羞羞电影院在线观看| 五月天免费网站| 日本在线视频一区二区三区| 国产无遮挡又黄又爽| 国产一区二区高清视频| 日韩视频免费大全中文字幕| 色综合激情五月| 久久精品无码一区二区三区| 欧美一级淫片丝袜脚交| 亚洲高清在线观看| 久久免费精品国产| 国产网站一区二区三区| 久久在精品线影院精品国产| 亚洲欧美日韩国产手机在线| av资源网站在线观看| 不卡av在线播放| 成人免费一区二区三区牛牛| 日本熟妇成熟毛茸茸| 麻豆导航在线观看| 亚洲一区 二区 三区| 欧美最顶级的aⅴ艳星| 亚洲女人毛片| 成人欧美一区二区三区在线播放| 欧美老熟妇乱大交xxxxx| 黄色大片免费观看| 北条麻妃99精品青青久久| 3d蒂法精品啪啪一区二区免费| 日韩极品一区| 日产乱码一卡二卡三免费| 中文字幕一二三四| 国产91在线播放精品| 激情 小说 亚洲 图片: 伦| 美女精品自拍一二三四| 手机在线看片日韩| 一级黄色在线| 一区二区三区四区五区精品| 亚洲精品久久久北条麻妃| 成人亚洲欧美日韩在线观看| 涩涩视频免费网站| 日韩欧美一区视频| 日韩精品国产一区| 国内精品免费| 免费中文字幕在线观看| 亚洲情综合五月天| 26uuu成人网一区二区三区| 中文字幕一区日韩电影| 日韩亚洲一区二区| 国产三区在线成人av| 男男电影完整版在线观看| 国产伦子伦对白视频| 四虎成人免费影院| 色视频免费网站| 2025中文字幕| 欧美精品一区二区三区涩爱蜜| 国产精品露脸av在线| 99视频都是精品热在线播放| 污黄视频在线观看| 久久久国产一区二区三区四区小说| www.激情网.com| www色com| 欧美一区二区中文字幕| 久久99精品久久久水蜜桃| 国产日韩欧美视频| xfplay爱情电影网love| 一区二区三区中文字幕精品精品| 国产成人香蕉在线视频网站| 亚洲精品欧美综合四区| 久久精品国内一区二区三区| 欧美人体视频xxxxx| 久久久久这里只有精品| 午夜精品免费视频| 国产精品日日摸夜夜添夜夜av| 少妇人妻大乳在线视频| 欧美成人午夜影院| 日日碰狠狠躁久久躁婷婷| 欧美日韩国产色| 久久久久久久久久久久久久久久久久| 精品中文av资源站在线观看| 欧美理论视频| 日本aⅴ在线观看| 手机在线电影一区| 中文字幕在线日本| 91一区二区三区在线播放| 成人黄色免费观看| 国产精品久久久久av电视剧| 日本伊人午夜精品| 小视频福利在线| 欧美三级视频在线播放| 日本一区二区综合亚洲| 国产成人成网站在线播放青青| 无码熟妇人妻av在线电影| aa级大片免费在线观看| 国产午夜亚洲精品理论片色戒| 欧美黄色激情视频| 免费日韩视频在线观看| 色哟哟无码精品一区二区三区| 好吊色在线视频| 日本成人性视频| 正义之心1992免费观看全集完整版| 午夜视频免费在线| 国产一区二区中文字幕| 日本一道高清一区二区三区| 久久精品99久久无色码中文字幕| 中文字幕av一区二区三区免费看| 精品免费久久久| 亚洲av无码国产精品久久| 污视频网站在线免费| 欧美老熟妇一区二区三区| 一二三区精品视频| 欧美韩日一区二区| 中文字幕在线观看日| 成人在线电影网站| 国精产品一区一区三区四川| 日韩一区二区三区免费观看| 欧美三级中文字幕在线观看| 欧美多人猛交狂配| 久久精品国产一区二区三区免费看| 东京热av一区| 欧美一区二区久久久| 欧美日韩一本| 99视频国产精品免费观看| 欧美一区二区黄片| 国产麻豆成人精品| 男人的天堂影院| 顶级黑人搡bbw搡bbbb搡| 中文字幕人妻一区二区三区视频| 免费观看成年人视频在线观看| jizzjizz中国精品麻豆| gogo高清在线播放免费| 午夜激情一区二区三区| lutube成人福利在线观看| 亚洲色图制服丝袜| 深夜精品寂寞黄网站在线观看| 91av网站在线播放| 国产视频一二三区| 婷婷综合网站| 日韩欧美有码在线| 在线播放精品| 欧美一区二区三区激情视频| 成人图片小说| 欧美三级视频在线播放| 国产一区二区99| 灌醉mj刚成年的大学平面模特| 五月花丁香婷婷| 欧美一区二区视频观看视频| 97精品国产97久久久久久粉红| 国产视频一区二区在线| 日日摸日日碰夜夜爽无码| 亚洲国产精品久久精品怡红院| 视频一区欧美精品| 欧美最新另类人妖| 久久久久久91亚洲精品中文字幕| 91香蕉视频免费看| 欧美午夜黄色| 一区二区三区精品99久久| 伊人开心综合网| 激情综合色播五月| 2019中文字幕在线电影免费| 欧美性色黄在线视频| av不卡免费看| 久久久久久久久影视| xfplay爱情电影网love| 日韩人妻一区二区三区蜜桃视频| 久久99蜜桃综合影院免费观看| 日本韩国欧美超级黄在线观看| 国产露脸无套对白在线播放| 成人羞羞视频播放网站| 91精品国产自产在线老师啪| 在线观看黄av| 精品人妻一区二区三区浪潮在线| 亚洲手机成人高清视频| av日韩在线播放| 日本私人网站在线观看| 亚洲产国偷v产偷v自拍涩爱| 色88888久久久久久影院按摩| 蜜臀久久99精品久久久酒店新书| 97成人在线观看视频| 国产一级片网站| 精品国产一区二区三区久久久久久| 夜夜骚av一区二区三区| 国产又黄又粗视频| 亚洲欧美成人影院| 国产精品一卡二| 久久久久久久久久久久久久久久久久| 欧美三级欧美成人高清www| 国产人妻精品午夜福利免费| 日本免费三片免费观看| 欧美激情视频在线观看| 国产一区二区波多野结衣| 四虎久久免费| 国产在线视精品麻豆| 制服丝袜综合日韩欧美| 欧美黑人性生活视频| 国产在线观看91精品一区| 成人精品福利视频| 国产1区2区3区在线| 亚洲激情在线激情| av福利网址| 水野朝阳av一区二区三区| 丁香六月色婷婷| 亚洲福利一区| 一区二区三区免费观看视频| 四虎在线免费视频| 一本色道久久综合亚洲精品酒店| 色综合视频一区中文字幕| 日韩精品视频在线免费观看| 视频一区中文字幕| 日本三级中文字幕在线观看| 午夜免费日韩视频| 国产高潮流白浆喷水视频| 一区二区三区免费看视频| 男人日女人bb视频| 国产在线精品视频| 国产精品手机在线| 色偷偷噜噜噜亚洲男人| 亚洲第一区视频| 国产精品12345| 偷偷操不一样的久久| 成人在线视频免费| 88av在线播放| 日韩aaaaa| 白浆在线视频| 国产精品久久久免费看| 日本一道在线观看| 激情综合一区二区三区| 伊人青青综合网| 先锋影音日韩| 视频一区欧美精品| 国产精品女人久久久久久| 伊人影院在线观看视频| 国产精品日韩精品欧美精品| 国产精品99蜜臀久久不卡二区| 91高潮大合集爽到抽搐| 激情丁香婷婷| 久久精品视频一区二区三区| 99久久99久久精品免费观看| 香港日本三级视频| 欧美裸体视频| 人妻少妇一区二区| v天堂福利视频在线观看| 蜜桃狠狠色伊人亚洲综合网站| 在线中文一区| 国产传媒一区二区| 中文字幕精品影院| 亚洲欧洲日产国码av系列天堂| 福利视频第一页| 98精品在线视频| 国产黄色免费大片| 欧美性受xxxx黑人xyx| 视频在线观看免费影院欧美meiju| 91精品国自产在线| 亚洲不卡在线播放| 免费电影一区| 婷婷丁香六月天| 日本熟妇乱子伦xxxx| 成人久久一区二区三区| 亚洲午夜在线播放| www亚洲成人| japanese在线观看| 白白色在线观看| 色综合天天做天天爱| 黄色片久久久久| 亚洲一区久久久| 高清成人在线观看| 天天操天天爱天天干| 日韩av不卡一区| 久久精品色综合| 91.www| 卡通欧美亚洲| 日韩一级免费视频| 国产特级淫片免费看| 国产精品成人99一区无码| 在线影院av| 国产一区二区免费在线观看| caoporn国产精品免费公开| 免费看日本一区二区| 韩国av免费在线观看| 亚洲色偷精品一区二区三区| 日本中文字幕在线2020| 国产精品入口芒果| 视频在线观看入口黄最新永久免费国产|