原創|使用教程|編輯:黃竹雯|2016-05-06 10:40:44.000|閱讀 469 次
概述:如今我們正在開發一個新的插件,一個能夠讓開發者在 Visual Studio (以下簡稱 VS ) 上建構能夠在 Linux 上運行 C++ 程序的套件。下方文章將繼續介紹使用我們這套全新的 Linux 計劃。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如今我們正在開發一個新的插件,一個能夠讓開發者在 Visual Studio (以下簡稱 VS ) 上建構能夠在 Linux 上運行 C++ 程序的套件。開發者可以借由這個插件將 C++ 程序移轉到 Linux 服務器、PC 以及移動設備上,也同時可以借由這個插件將這些機器連結至你的 VS 上。 VS 將會自動地復制一份并在遠端建構你的來源檔,再運行帶有除錯器的應用程序。我們的這項計劃也針對特殊的架構提供系統支持,包含 ARM 等。下方文章將繼續介紹使用我們這套全新的 Linux 計劃。
目前我們僅支持在遠端的目標 Linux 機器提供建構服務。我們并沒有限制特定的 Linux 發布版本,但我們仍舊在一些工具的表現上有些相依性的差異。需要特別注意的是,我們需要 openssh-server、g++、gdb 以及 gdbserver。用你最習慣的套件管理工具來安裝他們,例如在 Debian 類型的 Linux 就可以使用:
sudo apt-get install openssh-server g++ gdb gdbserver
下載 Visual C++ for Linux Development extension 或從 Visual Studio 上的插件管理員來獲得。目前我們在 Visual Studio 上的 Android Tools 上已有相依支持。如果你已經安裝了 VS 的話,你可以借由 Add Remove Programs 來新增這些功能,編輯 VS 然后在 Visual C++ 移動設備開發下選擇他們。
要開始一個新的項目可以透過以下路徑:Templates > Visual C++ > Cross Platform > Linux。
目前我們有三個可以使用的模板:針對像 Raspberry Pi 等物聯網裝置設計的 Blink、最基本的應用程序樣板 Console Application 以及讓開發者自己選擇需要加入的來源檔以及從預設設定起的 Empty。
我們從建構一個主控臺 app 開始。從模板新增完你的項目后,在 printf 敘述句的地方設下一個中斷點,然后敲擊 F5 或遠端 GDB 除錯器按鈕。根據預設值,這個主控臺 app 設定與 debug/x64 的環境相容。如果你的遠端連線標的是 x86 或 arm 架構,那你需要先改變上述設定。在我演示的這個范例我使用的是 x64 Ubuntu VM。
由于這是第一次連結到標的的 Linux 機器,所以會彈出一個連接資訊視窗,是由在建構項目時所觸發的。
我們同時支持密碼以及認證形式的驗證方式,包含使用復雜密碼的認證。在第一次成功連接后,我們會將你的連結資訊儲存以便在日后需要連接時快速存取。你可以從 Tools > Options > Cross Platform > Linux 的路徑來管理你已儲存的連結資訊,以及是的,密碼/復雜密碼是已加密形式儲存的。我們也同時計劃在未來的更新版本中,在連接時無需儲存連結資訊。
在連接的過程中,你的來源檔會被復制到遠端的 Linux 機器上,并觸發 gcc 并根據項目的屬性設定來建構原始碼。在項目建構完畢之后,你的程序將會在遠端的機器上執行,并停止在我們先前所設下的中斷點上。
我們可以借由以下的項目屬性來理解,東西是怎么被部署到遠端 Linux 機器上的。
在 remote settings 下,你可以看到 remote 根目錄是預設在 ~/projects/ ,且該路徑下的遠端項目目錄會與我們的項目名稱相符。從 Linux 機器上去看的話,我們可以在 ~/projects/ConsoleApplication1 下發現建構后的成品 main.cpp。
根據項目的 General setting,可以了解到我們針對 Output 以及 Intermediate 路徑是怎么設定的。除此之外,你可以發現到這個項目是被設定成一個應用程序的 — 代表我們的項目執行檔 ConsoleApplication1.out 是在 bin/x64/Debug/ 路徑下。另外可以注意到的是,我們也同時支持靜態以及動態的設定格式。
現在我們來研究物聯網裝置的部分 — 以 Raspberry Pi 為例。你可以使用任何類型的 Pi 來執行 Raspbian。在我們的 Blink 范例里我們使用— 如果你沒有這個安裝選項你也可以選擇從 apt 或來源檔來安裝。在 Tools > Options 搜尋 Linux 來新增一個連結,然后點擊 “add” 來新增一個連結到你的 Raspberry Pi。
從項目屬性設定的地方查看 Build Events 下的 Remote Post-Build Events。
你可以借由這個設定在遠端已建構好項目的 Linux 標的上執行指令。這個模板已先預設了針對 LED 輸出的 GPIO pin,所以我們不需要再以 root 的身份執行我們的執行檔。
現在將一個 LED 連接到 Raspberry Pi 上的 pin 17 位置,如下圖:
打開 main.cpp 檔,并在第一個 digitalWrite 后 delay call 的地方設下中斷點,然后敲擊 F5。你可以看到你的 LED 燈亮起,且執行程序會在你下中斷點的地方停住。將你的程序持續執行到下一個 digitalWrite call 之后便可以看到 LED 燈熄滅。
可以透過瀏覽我們的,來追蹤所有我們目前針對這樣的系統所釋出的功能。
我們剛已在上述的文章中,介紹了無介面 (headless) 以及裝置型的 Linux 應用程序,那桌面型的呢?在這里我們將介紹一點特別的:我們將在 Linux 桌面上執行一個 OpenGL 應用程序。首先要確定的是,你的 Linux 桌面已經設定為包含 OpenGL 的環境,下述是我們會需要用到的 apt 套件:libgles1-mesa、libgles1-mesa-dev、freeglut3 以及 freeglut3-dev。
接下來請先創建一個空的 Linux 項目,然后前往教學下載旋轉方塊的來源檔,將其解壓縮并將 main.c 加到你的項目下。要能夠運行 Intellisense,你需要將 OpenGL 的標頭 (headers) 新增到 VC++ Directories,你可以從里下載他們。現在前往你的項目屬性設定,然后新增 export DISPLAY=:0.0 到 Pre-Launch command 下。
然后,在 Linker Input 下新增 “m;GL;GLU;glut” 到 Library Dependencies 欄位。
另外,確認你的遠端設定是對應到對的機器。
接下來按下 F5。
還有一些有趣值得下中斷點的地方,例如大約在 80 行左右的位置有可以調整方塊旋轉的設定(試著調整看看 alpha 值),或在 KeyboardFunc 里可以檢查按下鍵盤時所輸入的值。
我們期望您與我們對于這些新開放的可能擁有一樣的期待。
安裝 Visual C++ for Linux Development extension,嘗試看看并告知我們哪些是你可以成功運行,以及哪些是你遇到的阻礙或遭遇任何問題。如果你有興趣的領域是在物聯網的部分的話,可以前往關注我們的 IoT Development page 以獲取最新資訊。你可以借由這個部落格,或展覽頁的額外分頁、VS 回饋頻道以及 Twitter 上的 @visualc、@robotdad 或我的帳號聯系到我們。
本文翻譯自:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn