使用VS Code通過(guò)SSH編譯Linux上的C++程序的詳細(xì)步驟
引言
在軟件開(kāi)發(fā)領(lǐng)域,跨平臺(tái)開(kāi)發(fā)是一項(xiàng)常見(jiàn)需求。特別是對(duì)于C++開(kāi)發(fā)者來(lái)說(shuō),有時(shí)需要在Windows環(huán)境下編寫代碼,但卻需要在Linux環(huán)境中編譯和運(yùn)行。這種情況在系統(tǒng)編程、嵌入式開(kāi)發(fā)或高性能計(jì)算領(lǐng)域尤為常見(jiàn)。
Visual Studio Code (VS Code) 提供了強(qiáng)大的遠(yuǎn)程開(kāi)發(fā)功能,通過(guò)SSH擴(kuò)展,開(kāi)發(fā)者可以直接在本地VS Code界面中編輯、編譯和調(diào)試遠(yuǎn)程Linux服務(wù)器上的C++代碼。本文將詳細(xì)介紹如何配置和使用VS Code的SSH遠(yuǎn)程開(kāi)發(fā)功能,實(shí)現(xiàn)無(wú)縫的跨平臺(tái)C++開(kāi)發(fā)體驗(yàn)。
前提條件
在開(kāi)始之前,請(qǐng)確保你已經(jīng)具備以下條件:
- 本地Windows系統(tǒng)安裝了VS Code
- 可訪問(wèn)的Linux服務(wù)器(物理機(jī)或虛擬機(jī))
- Linux服務(wù)器上已安裝SSH服務(wù)
- Linux服務(wù)器上已安裝C++編譯工具鏈(GCC/G++)
- 本地Windows系統(tǒng)安裝了OpenSSH客戶端
第一步:安裝必要的VS Code擴(kuò)展
首先,我們需要在VS Code中安裝Remote Development擴(kuò)展包:
- 打開(kāi)VS Code
- 點(diǎn)擊左側(cè)邊欄的擴(kuò)展圖標(biāo)(或按下
Ctrl+Shift+X) - 在搜索框中輸入"Remote Development"
- 找到Microsoft發(fā)布的Remote Development擴(kuò)展包并安裝
- 或者直接安裝其中的"Remote - SSH"擴(kuò)展
第二步:配置SSH連接
安裝完擴(kuò)展后,我們需要配置SSH連接:
- 按下
F1或Ctrl+Shift+P打開(kāi)命令面板 - 輸入"Remote-SSH: Connect to Host…"并選擇
- 選擇"Add New SSH Host…"選項(xiàng)
- 輸入SSH連接命令,格式為:
ssh username@hostname_or_ip- 例如:
ssh developer@192.168.1.100或ssh developer@my-linux-server
- 例如:
- 選擇配置文件保存位置(通常選擇第一個(gè)選項(xiàng),即用戶配置文件)
- 連接成功后,VS Code會(huì)打開(kāi)一個(gè)新窗口,連接到遠(yuǎn)程服務(wù)器
如果你需要使用SSH密鑰進(jìn)行身份驗(yàn)證,請(qǐng)確保已經(jīng)正確設(shè)置了SSH密鑰對(duì)。你可以使用以下命令生成SSH密鑰:
ssh-keygen -t rsa -b 4096
然后使用以下命令將公鑰復(fù)制到服務(wù)器:
ssh-copy-id username@hostname_or_ip
第三步:在遠(yuǎn)程服務(wù)器上安裝C++開(kāi)發(fā)工具
連接到遠(yuǎn)程服務(wù)器后,我們需要確保服務(wù)器上安裝了必要的C++開(kāi)發(fā)工具:
在VS Code的遠(yuǎn)程窗口中,打開(kāi)終端(
Ctrl+)根據(jù)Linux發(fā)行版,安裝C++開(kāi)發(fā)工具:
對(duì)于Ubuntu/Debian系統(tǒng):
sudo apt update sudo apt install build-essential gdb cmake
- 對(duì)于CentOS/RHEL系統(tǒng):
sudo yum groupinstall "Development Tools" sudo yum install gdb cmake
- 對(duì)于Arch Linux系統(tǒng):
sudo pacman -S base-devel gdb cmake
第四步:安裝C++擴(kuò)展到遠(yuǎn)程服務(wù)器
在遠(yuǎn)程VS Code窗口中,我們需要安裝C++擴(kuò)展:
- 點(diǎn)擊左側(cè)邊欄的擴(kuò)展圖標(biāo)
- 注意此時(shí)顯示的是"遠(yuǎn)程服務(wù)器"的擴(kuò)展列表
- 搜索"C++"并安裝Microsoft的C/C++擴(kuò)展
- 可選:安裝CMake和CMake Tools擴(kuò)展,如果你使用CMake構(gòu)建系統(tǒng)
第五步:創(chuàng)建或打開(kāi)C++項(xiàng)目
現(xiàn)在,我們可以在遠(yuǎn)程服務(wù)器上創(chuàng)建或打開(kāi)C++項(xiàng)目:
- 在VS Code中,選擇"文件 > 打開(kāi)文件夾"
- 瀏覽并選擇遠(yuǎn)程服務(wù)器上的項(xiàng)目文件夾
- 如果是新項(xiàng)目,可以創(chuàng)建新文件夾并添加C++源文件
下面是一個(gè)簡(jiǎn)單的C++項(xiàng)目結(jié)構(gòu)示例:
my_project/ ├── .vscode/ │ ├── c_cpp_properties.json │ ├── launch.json │ └── tasks.json ├── src/ │ ├── main.cpp │ └── utils.cpp ├── include/ │ └── utils.h ├── CMakeLists.txt └── README.md
第六步:配置C++項(xiàng)目
為了能夠編譯和調(diào)試C++代碼,我們需要配置VS Code的任務(wù)和啟動(dòng)設(shè)置:
創(chuàng)建tasks.json(編譯任務(wù))
- 按下
F1或Ctrl+Shift+P打開(kāi)命令面板 - 輸入"Tasks: Configure Default Build Task"并選擇
- 選擇"Create tasks.json file from template"
- 選擇"Others"創(chuàng)建自定義任務(wù)
將以下內(nèi)容添加到.vscode/tasks.json文件中:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${workspaceFolder}/src/*.cpp",
"-I",
"${workspaceFolder}/include",
"-o",
"${workspaceFolder}/bin/program"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"]
}
]
}
創(chuàng)建launch.json(調(diào)試配置)
- 切換到調(diào)試視圖(按下
Ctrl+Shift+D) - 點(diǎn)擊"創(chuàng)建launch.json文件"
- 選擇"C++ (GDB/LLDB)"環(huán)境
將以下內(nèi)容添加到.vscode/launch.json文件中:
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ - 構(gòu)建和調(diào)試活動(dòng)文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/program",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "為 gdb 啟用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
創(chuàng)建c_cpp_properties.json(IntelliSense配置)
- 按下
F1或Ctrl+Shift+P打開(kāi)命令面板 - 輸入"C/C++: Edit Configurations (JSON)"并選擇
將以下內(nèi)容添加到.vscode/c_cpp_properties.json文件中:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/include"
],
"defines": [],
"compilerPath": "/usr/bin/g++",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
第七步:編寫C++代碼
現(xiàn)在,讓我們創(chuàng)建一個(gè)簡(jiǎn)單的C++程序:
- 在
include文件夾中創(chuàng)建utils.h:
#ifndef UTILS_H #define UTILS_H #include <string> std::string getGreeting(const std::string& name); #endif // UTILS_H
- 在
src文件夾中創(chuàng)建utils.cpp:
#include "../include/utils.h"
std::string getGreeting(const std::string& name) {
return "Hello, " + name + "! Welcome to remote C++ development!";
}
- 在
src文件夾中創(chuàng)建main.cpp:
#include <iostream>
#include "../include/utils.h"
int main() {
std::string name;
std::cout << "Enter your name: ";
std::getline(std::cin, name);
std::string greeting = getGreeting(name);
std::cout << greeting << std::endl;
return 0;
}
第八步:編譯和運(yùn)行C++程序
現(xiàn)在我們可以編譯和運(yùn)行我們的C++程序:
確保遠(yuǎn)程服務(wù)器上存在
bin目錄(如果不存在,創(chuàng)建它):
mkdir -p bin
按下
Ctrl+Shift+B運(yùn)行默認(rèn)構(gòu)建任務(wù)(我們?cè)趖asks.json中配置的任務(wù))在終端中運(yùn)行編譯后的程序:
./bin/program
第九步:調(diào)試C++程序
VS Code提供了強(qiáng)大的調(diào)試功能:
- 在代碼中設(shè)置斷點(diǎn)(點(diǎn)擊行號(hào)左側(cè))
- 按下
F5開(kāi)始調(diào)試 - 程序?qū)⒃跀帱c(diǎn)處暫停,你可以:
- 查看變量值(懸停在變量上或使用變量面板)
- 使用調(diào)試控制臺(tái)執(zhí)行表達(dá)式
- 使用調(diào)試工具欄控制程序執(zhí)行(繼續(xù)、單步執(zhí)行等)

第十步:使用CMake構(gòu)建系統(tǒng)(可選)
對(duì)于更復(fù)雜的C++項(xiàng)目,推薦使用CMake構(gòu)建系統(tǒng):
- 在項(xiàng)目根目錄創(chuàng)建
CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.10)
project(RemoteCppProject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
add_executable(program ${SOURCES})
安裝VS Code的CMake Tools擴(kuò)展(在遠(yuǎn)程服務(wù)器上)
按下
F1或Ctrl+Shift+P打開(kāi)命令面板,輸入"CMake: Configure"并選擇選擇編譯器(通常是GCC)
使用CMake工具欄構(gòu)建和運(yùn)行項(xiàng)目
性能優(yōu)化技巧
在使用VS Code進(jìn)行遠(yuǎn)程C++開(kāi)發(fā)時(shí),以下是一些提高性能的技巧:
使用SSH配置優(yōu)化連接:
編輯~/.ssh/config文件,添加以下配置:
Host my-linux-server
HostName 192.168.1.100
User developer
Compression yes
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
使用工作區(qū)信任:
當(dāng)VS Code提示是否信任工作區(qū)時(shí),選擇"信任"以啟用所有功能。優(yōu)化文件監(jiān)視:
在遠(yuǎn)程服務(wù)器上,增加inotify限制:
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
使用Git進(jìn)行版本控制:
在遠(yuǎn)程服務(wù)器上初始化Git倉(cāng)庫(kù),VS Code的Git集成將自動(dòng)工作。
常見(jiàn)問(wèn)題解決
連接問(wèn)題
如果無(wú)法連接到遠(yuǎn)程服務(wù)器,請(qǐng)檢查:
- SSH服務(wù)是否在服務(wù)器上運(yùn)行:
sudo systemctl status sshd
- 防火墻是否允許SSH連接(通常是22端口):
sudo ufw status # 如果需要,允許SSH連接 sudo ufw allow ssh
網(wǎng)絡(luò)連接是否正常(可以使用ping測(cè)試)
編譯問(wèn)題
如果編譯失敗,請(qǐng)檢查:
- 是否安裝了所有必要的開(kāi)發(fā)工具和庫(kù)
- 編譯命令是否正確
- 項(xiàng)目結(jié)構(gòu)是否符合預(yù)期
調(diào)試問(wèn)題
如果調(diào)試不工作,請(qǐng)檢查:
- GDB是否正確安裝
- launch.json中的路徑是否正確
- 程序是否以調(diào)試模式編譯(使用-g標(biāo)志)
結(jié)論
通過(guò)VS Code的遠(yuǎn)程SSH功能,我們可以在Windows環(huán)境中無(wú)縫地開(kāi)發(fā)、編譯和調(diào)試Linux上的C++程序。這種開(kāi)發(fā)模式結(jié)合了Windows桌面環(huán)境的便捷性和Linux系統(tǒng)的強(qiáng)大開(kāi)發(fā)能力,特別適合需要在Linux環(huán)境中編譯和運(yùn)行的C++項(xiàng)目。
無(wú)論是系統(tǒng)編程、嵌入式開(kāi)發(fā)還是高性能計(jì)算,這種遠(yuǎn)程開(kāi)發(fā)方式都能顯著提高開(kāi)發(fā)效率,減少環(huán)境切換的成本。隨著VS Code不斷完善其遠(yuǎn)程開(kāi)發(fā)功能,這種開(kāi)發(fā)模式將變得越來(lái)越流暢和強(qiáng)大。
以上就是使用VS Code通過(guò)SSH編譯Linux上的C++程序的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于VS Code SSH編譯C++程序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C 語(yǔ)言restrict 關(guān)鍵字的使用淺談
C 語(yǔ)言restrict 關(guān)鍵字的使用淺談,需要的朋友可以參考一下2013-04-04
C++用一棵紅黑樹(shù)同時(shí)封裝出set與map的實(shí)現(xiàn)代碼
set中存儲(chǔ)的一般為鍵K即可,而map存儲(chǔ)的一般都是鍵值對(duì)KV,也就是說(shuō)他們結(jié)構(gòu)是不同的,那么我們?nèi)绾尾拍苡靡活w紅黑樹(shù)同時(shí)封裝出set與map兩種容器呢,那么接下來(lái)我們具體地來(lái)研究下STL庫(kù)中是怎樣實(shí)現(xiàn)的,并且進(jìn)行模擬實(shí)現(xiàn),需要的朋友可以參考下2024-03-03
C++?OpenCV實(shí)現(xiàn)二維碼檢測(cè)功能
這篇文章主要介紹了如何利用C++?OpenCV實(shí)現(xiàn)二維碼檢測(cè)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-01-01
C語(yǔ)言實(shí)現(xiàn)最簡(jiǎn)單的剪刀石頭布小游戲示例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最簡(jiǎn)單的剪刀石頭布小游戲,涉及C語(yǔ)言數(shù)組、隨機(jī)數(shù)與數(shù)值運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)例講解單鏈表的實(shí)現(xiàn)
單鏈表是后面要學(xué)的雙鏈表以及循環(huán)鏈表的基礎(chǔ),要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C++,我們就要奠定好這塊基石!接下來(lái)就和我一起學(xué)習(xí)吧2022-03-03
C++實(shí)現(xiàn)打地鼠游戲設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)打地鼠游戲設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
C語(yǔ)言學(xué)習(xí)之關(guān)鍵字的示例詳解
關(guān)鍵字,這名字一聽(tīng),就很關(guān)鍵。而有些關(guān)鍵字,你可能不是很了解,更別談使用。所以,這篇文章將帶你見(jiàn)識(shí)常見(jiàn)的關(guān)鍵字,一起領(lǐng)略它們的風(fēng)采吧2022-10-10

