Ubuntu 環(huán)境下的 C/C++ 編譯與調(diào)試配置方法
詳細(xì)教學(xué)文檔:Ubuntu 環(huán)境下的 C/C++ 編譯與調(diào)試配置
本文檔將手把手引導(dǎo)你完成在 Ubuntu 環(huán)境中設(shè)置 VS Code 的 tasks.json
和 launch.json
,實(shí)現(xiàn)以下目標(biāo):
- 統(tǒng)一管理輸出文件:將所有編譯生成的可執(zhí)行文件統(tǒng)一存放到項(xiàng)目的
build
目錄。 - 優(yōu)化調(diào)試流程:調(diào)試器自動(dòng)定位
build
中的可執(zhí)行文件,免去手動(dòng)調(diào)整路徑的麻煩。 - 跨平臺(tái)兼容性:確保配置適用于 Ubuntu 和其他類 Unix 系統(tǒng)。
前提條件
在開始之前,請(qǐng)確保系統(tǒng)已安裝以下工具:
g++
編譯器
安裝命令:
sudo apt install g++
gdb
調(diào)試器
安裝命令:
sudo apt install gdb
VS Code 擴(kuò)展:
C/C++ 插件(Microsoft 提供):在擴(kuò)展市場中搜索 “C/C++” 并安裝。
創(chuàng)建項(xiàng)目目錄結(jié)構(gòu)
建議項(xiàng)目目錄結(jié)構(gòu)如下:
project-root/ ├── build/ # 編譯生成的可執(zhí)行文件目錄 ├── src/ # 源代碼文件目錄 │ ├── main.cpp # 示例源代碼文件 ├── tasks.json # VS Code 任務(wù)配置文件 └── launch.json # VS Code 調(diào)試配置文件
執(zhí)行以下命令創(chuàng)建目錄結(jié)構(gòu):
mkdir -p project-root/build mkdir -p project-root/src
將你的源代碼放入 src
目錄,例如創(chuàng)建一個(gè)簡單的 main.cpp
:
#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; }
配置 tasks.json
文件路徑
將 tasks.json
保存到項(xiàng)目目錄下的 .vscode
文件夾中。如果文件夾不存在,使用以下命令創(chuàng)建:
mkdir -p project-root/.vscode touch project-root/.vscode/tasks.json
完整配置內(nèi)容
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ 編譯到 build 目錄 (Ubuntu)", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", // 彩色錯(cuò)誤提示 "-g", // 啟用調(diào)試信息 "${workspaceFolder}/src/${fileBasename}", // 指定源文件路徑 "-o", // 輸出選項(xiàng) "${workspaceFolder}/build/${fileBasenameNoExtension}" // 輸出文件路徑 ], "options": { "cwd": "${workspaceFolder}" // 設(shè)置工作目錄為項(xiàng)目根目錄 }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true // 默認(rèn)構(gòu)建任務(wù) }, "detail": "將當(dāng)前活動(dòng)文件編譯到 build 目錄中" } ] }
關(guān)鍵解釋
${workspaceFolder}
:指代項(xiàng)目根目錄。${fileBasename}
:當(dāng)前活動(dòng)文件的文件名(包括擴(kuò)展名)。${fileBasenameNoExtension}
:當(dāng)前活動(dòng)文件的文件名(不包括擴(kuò)展名)。-g
:開啟調(diào)試符號(hào),支持調(diào)試功能。
配置 launch.json
文件路徑
將 launch.json
保存到 .vscode
文件夾中:
touch project-root/.vscode/launch.json
完整配置內(nèi)容
{ "version": "0.2.0", "configurations": [ { "name": "C/C++ Runner: Debug Session", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/${fileBasenameNoExtension}", // 指向 build 中的可執(zhí)行文件 "args": [], // 可選參數(shù),留空 "stopAtEntry": false, // 是否在入口處停止 "cwd": "${workspaceFolder}/build", // 調(diào)試時(shí)的工作目錄 "environment": [], // 環(huán)境變量 "externalConsole": false, // 使用內(nèi)嵌終端 "MIMode": "gdb", // 使用 gdb 調(diào)試 "miDebuggerPath": "/usr/bin/gdb", // gdb 路徑 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
關(guān)鍵解釋
program
:動(dòng)態(tài)指向build
目錄中的可執(zhí)行文件,自動(dòng)根據(jù)源文件名匹配。cwd
:調(diào)試器工作目錄,設(shè)置為build
。miDebuggerPath
:指定調(diào)試器路徑。
使用步驟
1. 編譯程序
- 打開源文件,例如
src/main.cpp
。 - 按快捷鍵
Ctrl + Shift + B
或從菜單中選擇 任務(wù) -> 運(yùn)行任務(wù)。 - 確??蓤?zhí)行文件生成到
build
目錄,例如build/main
。
2. 調(diào)試程序
- 按快捷鍵
F5
或從菜單中選擇 運(yùn)行 -> 啟動(dòng)調(diào)試。 - 程序?qū)⒃?
build
目錄下運(yùn)行,調(diào)試器會(huì)附加到進(jìn)程。
常見問題排查
問題 1:g++
或 gdb
未安裝
解決方法:
sudo apt install g++ gdb
問題 2:build
目錄不存在或無寫權(quán)限
解決方法:
mkdir -p buildchmod +w build
問題 3:調(diào)試時(shí)程序無法找到輸入文件
原因:默認(rèn)工作目錄為 build
。
解決方法:將輸入文件復(fù)制到 build
目錄,或使用絕對(duì)路徑。
最終效果總結(jié)
- 統(tǒng)一輸出路徑:所有可執(zhí)行文件存儲(chǔ)在
build
目錄,管理更清晰。 - 一鍵調(diào)試:按
F5
即可運(yùn)行調(diào)試,無需手動(dòng)配置路徑。 - 易于擴(kuò)展:適用于多文件項(xiàng)目,通過修改
tasks.json
的args
增加編譯參數(shù)即可支持復(fù)雜構(gòu)建需求。
祝你使用愉快!
到此這篇關(guān)于Ubuntu 環(huán)境下的 C/C++ 編譯與調(diào)試配置的文章就介紹到這了,更多相關(guān)Ubuntu 編譯調(diào)試 C++內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中結(jié)構(gòu)體和共用體實(shí)例教程
這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體和共用體的相關(guān)資料,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,共用體也叫聯(lián)合體,使幾個(gè)不同類型的變量共占一段內(nèi)存(相互覆蓋),需要的朋友可以參考下2021-06-06輸入一個(gè)字符串,取出其中的整數(shù)(實(shí)現(xiàn)代碼)
輸入一個(gè)字符串,內(nèi)含所有數(shù)字和非數(shù)字字符。將其中連續(xù)的數(shù)字作為一個(gè)整數(shù),依次存放到一個(gè)數(shù)組中,統(tǒng)計(jì)共有多少個(gè)整數(shù),并輸出這些數(shù)2013-09-09c++中struct和class的區(qū)別小結(jié)
在C++中,class和struct都是用于定義自定義數(shù)據(jù)類型的關(guān)鍵字,本文主要介紹了c++中struct和class的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08