下GCC/G++編譯器安裝配置全攻略:從基礎(chǔ)到多版本管理)
1. 項(xiàng)目概述為什么我們需要一個可靠的C編譯器在Linux世界里折騰C開發(fā)第一道繞不開的坎就是編譯器的安裝。你可能剛從Windows轉(zhuǎn)過來習(xí)慣了IDE一鍵配置的便利結(jié)果在終端里敲下g --version卻只得到一個“command not found”的冰冷回應(yīng)?;蛘吣阏诓渴鹨粋€服務(wù)器應(yīng)用源碼在手卻因?yàn)橄到y(tǒng)自帶的編譯器版本太老無法編譯那些用了C17甚至C20新特性的現(xiàn)代代碼。這個看似簡單的“安裝g”任務(wù)背后牽扯的是整個開發(fā)環(huán)境的基石是否穩(wěn)固。我見過太多新手在這個環(huán)節(jié)卡住有的照著過時的教程安裝導(dǎo)致依賴沖突有的在最小化安裝的服務(wù)器系統(tǒng)上連基本的構(gòu)建工具都沒有還有的雖然裝上了但不知道如何管理多個版本導(dǎo)致項(xiàng)目編譯出錯。g作為GNU編譯器集合GCC中用于編譯C代碼的前端它的安裝不僅僅是運(yùn)行一兩條命令那么簡單。它關(guān)乎你后續(xù)所有C項(xiàng)目的構(gòu)建效率、代碼優(yōu)化能力以及對新語言標(biāo)準(zhǔn)的支持度。這篇文章我會從一個老手的視角帶你走一遍在主流Linux發(fā)行版上安裝和配置g的完整流程。我們不止于“怎么裝”更會深入“為什么這么裝”并分享那些只有踩過坑才知道的細(xì)節(jié)和技巧。無論你用的是Ubuntu、CentOS、Fedora還是Arch無論你需要的是穩(wěn)定版還是最新版這里都有對應(yīng)的方案。2. 核心思路與發(fā)行版選型策略在Linux上安裝軟件最大的特點(diǎn)就是“發(fā)行版決定方法”。不同的發(fā)行版使用不同的包管理系統(tǒng)這直接決定了你安裝g的命令和后續(xù)的管理方式。盲目搜索“Linux安裝g”然后隨便找一條命令執(zhí)行是災(zāi)難的開始。我們的核心思路是先識別系統(tǒng)再選擇源最后執(zhí)行安裝。2.1 主流發(fā)行版及其包管理器的選擇首先你需要知道自己用的是什么發(fā)行版。打開終端輸入cat /etc/os-release或lsb_release -a就能看到詳細(xì)信息。主流的分為幾大陣營Debian/Ubuntu及其衍生版如Linux Mint使用APTAdvanced Package Tool包管理器。它的優(yōu)勢是軟件倉庫極其龐大社區(qū)支持好安裝命令簡單apt-get或apt。對于絕大多數(shù)桌面用戶和初學(xué)者Ubuntu系列是首選因?yàn)橄嚓P(guān)的教程和問題解決方案最容易找到。RHEL/CentOS/Fedora及其衍生版主要使用YUMCentOS 7及以前或DNFFedora, CentOS 8RHEL 8包管理器。這類系統(tǒng)在企業(yè)服務(wù)器領(lǐng)域占統(tǒng)治地位更強(qiáng)調(diào)穩(wěn)定性和長期支持。如果你做服務(wù)器開發(fā)或需要在企業(yè)環(huán)境部署熟悉這個系列是必須的。Arch Linux及其衍生版如Manjaro使用Pacman包管理器。它的哲學(xué)是“滾動更新”軟件版本通常是最新的。適合喜歡追新、愿意自己動手解決依賴問題的進(jìn)階用戶。安裝g在這里也能輕易獲得最新版本。openSUSE使用Zypper包管理器。它在歐洲和某些企業(yè)環(huán)境中流行有強(qiáng)大的YaST配置工具。選擇哪個發(fā)行版取決于你的主要工作場景。個人學(xué)習(xí)開發(fā)Ubuntu桌面版最友好搭建生產(chǎn)服務(wù)器CentOS Stream或Ubuntu Server LTS是穩(wěn)妥之選想體驗(yàn)最前沿的編譯器特性Arch或Fedora可能更合適。2.2 穩(wěn)定版與最新版的權(quán)衡安裝g時你會面臨第二個選擇是安裝發(fā)行版軟件倉庫中提供的穩(wěn)定版本還是去獲取由GCC項(xiàng)目直接發(fā)布的最新版本安裝穩(wěn)定版推薦給大多數(shù)用戶通過系統(tǒng)包管理器安裝例如apt install g。這是最簡單、最安全的方法。系統(tǒng)倉庫中的g版本經(jīng)過了發(fā)行版維護(hù)者的測試和集成能與系統(tǒng)中的其他庫如C標(biāo)準(zhǔn)庫glibc完美兼容。缺點(diǎn)是版本可能不是最新的。例如Ubuntu 22.04 LTS默認(rèn)提供g 11而當(dāng)時GCC已經(jīng)發(fā)布了12甚至13。但對于學(xué)習(xí)、維護(hù)現(xiàn)有項(xiàng)目或追求系統(tǒng)絕對穩(wěn)定來說這完全夠用。手動編譯安裝最新版適合進(jìn)階用戶和特定需求當(dāng)你的項(xiàng)目必須使用C20/23的某個新特性而系統(tǒng)倉庫的編譯器版本不支持時你就需要自己下載GCC源碼進(jìn)行編譯安裝。這個過程復(fù)雜、耗時編譯GCC本身就需要不少時間和計算資源并且需要自行處理依賴和路徑配置容易把系統(tǒng)環(huán)境搞亂。除非有明確需求否則不建議新手這么做。一個折中的好辦法是使用第三方維護(hù)的軟件源PPA for Ubuntu COPR for Fedora等它們可能提供了比官方倉庫更新但已經(jīng)打好包的g版本。這比手動編譯要省心得多。注意在生產(chǎn)服務(wù)器上除非有壓倒性的理由否則永遠(yuǎn)優(yōu)先使用發(fā)行版官方倉庫的穩(wěn)定版本。手動安裝或添加第三方源帶來的版本不一致性和潛在依賴沖突在集群化部署和自動化運(yùn)維中會是噩夢。3. 分步實(shí)操四大主流發(fā)行版安裝指南理論說完我們進(jìn)入實(shí)戰(zhàn)。下面我將分別演示在四大類主流發(fā)行版上安裝g的詳細(xì)步驟并解釋每一步在做什么。3.1 Debian/Ubuntu 系列安裝流程這是用戶基數(shù)最大的系列我們以Ubuntu 22.04 LTS為例。第一步更新軟件包索引在安裝任何新軟件之前更新本地軟件包列表是一個好習(xí)慣。這能確保你獲取到倉庫中最新的版本信息和依賴關(guān)系。sudo apt update這個命令本身不升級任何已安裝的軟件它只是讓APT去同步遠(yuǎn)程倉庫的索引文件到本地。第二步安裝g編譯器包在Debian/Ubuntu中g(shù)包是一個指向特定GCC版本的元包。直接安裝它即可。sudo apt install g這里有一個至關(guān)重要的細(xì)節(jié)apt install g會自動安裝名為g的包及其依賴包括gccC編譯器、libstdcC標(biāo)準(zhǔn)庫以及一系列編譯所需的底層庫和頭文件。你不需要單獨(dú)安裝gcc。第三步驗(yàn)證安裝安裝完成后必須驗(yàn)證。g --version如果安裝成功你會看到類似下面的輸出g (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. ...這確認(rèn)了g已加入PATH環(huán)境變量并且可以正常調(diào)用。你還可以寫一個簡單的測試程序echo -e #include iostream\nint main() { std::cout \Hello, G!\ std::endl; return 0; } test.cpp g -o test test.cpp ./test如果輸出“Hello, G!”那么恭喜你一個完整的編譯環(huán)境已經(jīng)就緒。第四步可選安裝特定版本或額外工具有時你需要多個g版本。Ubuntu倉庫通常同時提供多個主要版本。# 搜索可用的g版本 apt search g- | grep ^g # 例如安裝g-12 sudo apt install g-12 # 安裝后你可以通過指定完整命令名來使用它 g-12 --version要安裝構(gòu)建通用軟件可能需要的開發(fā)工具鏈可以安裝build-essential元包它包含了g, gcc, make, libc-dev等一整套工具。sudo apt install build-essential3.2 RHEL/CentOS/Fedora 系列安裝流程在企業(yè)環(huán)境中CentOS/RHEL系列更為常見。我們以CentOS 8 Stream或RHEL 8使用DNF為例。對于CentOS 7使用YUM將命令中的dnf替換為yum即可大部分操作是相似的。第一步更新系統(tǒng)并安裝EPEL倉庫如需要首先更新系統(tǒng)確保包管理器狀態(tài)最新。對于CentOS/RHEL啟用EPELExtra Packages for Enterprise Linux倉庫可以獲得更多軟件包雖然不是安裝g所必須但通常建議啟用。sudo dnf update sudo dnf install epel-release # 安裝EPEL倉庫第二步安裝g在RHEL系列中g(shù)包的名字通常是gcc-c。sudo dnf install gcc-c同樣這個命令會解決所有依賴包括gcc和標(biāo)準(zhǔn)庫。第三步驗(yàn)證安裝驗(yàn)證步驟與Ubuntu相同g --version以及編譯運(yùn)行測試程序。第四步安裝開發(fā)工具組類似于Ubuntu的build-essentialRHEL系列提供了一個“Development Tools”組它包含了一整套開發(fā)環(huán)境。# 查看該組包含哪些包 dnf groupinfo Development Tools # 安裝整個工具組 sudo dnf groupinstall Development Tools對于服務(wù)器最小化安裝這個命令非常有用可以一次性搭建好基礎(chǔ)的編譯環(huán)境。3.3 Arch Linux 系列安裝流程Arch Linux的安裝過程最為簡潔因?yàn)樗膫}庫總是最新的。第一步同步包數(shù)據(jù)庫并更新系統(tǒng)推薦Arch是滾動更新定期更新整個系統(tǒng)是保持健康的好習(xí)慣。sudo pacman -Syu第二步安裝g在Arch中g(shù)包含在gcc包里。是的安裝gcc包就會同時安裝g。sudo pacman -S gccPacman會自動處理依賴。安裝完成后g命令即可用。第三步驗(yàn)證安裝g --version由于Arch的激進(jìn)更新策略你在這里看到的版本號很可能是所有發(fā)行版中最新的。3.4 openSUSE 系列安裝流程openSUSE使用Zypper包管理器邏輯清晰。第一步刷新倉庫sudo zypper refresh第二步安裝g在openSUSE中包名是gcc-c。sudo zypper install gcc-c第三步驗(yàn)證安裝g --version4. 進(jìn)階配置與管理多版本共存與路徑優(yōu)化安裝好一個能用的g只是開始。在實(shí)際開發(fā)中你可能會遇到需要為不同項(xiàng)目切換不同編譯器版本的情況。例如一個老項(xiàng)目需要用g7編譯而你的新項(xiàng)目想體驗(yàn)g13的模塊功能。這就需要管理多個編譯器版本。4.1 使用update-alternatives管理多版本Debian/Ubuntuupdate-alternatives是Debian系發(fā)行版中一個強(qiáng)大的工具用于管理系統(tǒng)中同一個命令的多個候選版本。假設(shè)你已經(jīng)通過apt安裝了g-11和g-12。第一步將各個版本注冊到alternatives系統(tǒng)中sudo update-alternatives --install /usr/bin/g g /usr/bin/g-11 110 sudo update-alternatives --install /usr/bin/g g /usr/bin/g-12 120--install注冊一個新選項(xiàng)。/usr/bin/g符號鏈接的實(shí)際位置主鏈接。galternatives系統(tǒng)中的組名。/usr/bin/g-11此選項(xiàng)指向的實(shí)際可執(zhí)行文件路徑。110優(yōu)先級數(shù)字?jǐn)?shù)字越大優(yōu)先級越高。當(dāng)自動模式時系統(tǒng)會選擇優(yōu)先級最高的版本。第二步交互式選擇當(dāng)前使用的版本sudo update-alternatives --config g執(zhí)行后會顯示一個菜單There are 2 choices for the alternative g (providing /usr/bin/g). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/g-12 120 auto mode 1 /usr/bin/g-11 110 manual mode 2 /usr/bin/g-12 120 manual mode Press enter to keep the current choice[*], or type selection number:輸入對應(yīng)的數(shù)字如1然后回車即可切換。切換后g --version的輸出就會改變。第三步查看當(dāng)前配置update-alternatives --display g這個方法非常干凈它只修改了/usr/bin/g這個符號鏈接指向哪個具體的二進(jìn)制文件不影響各個版本本身的安裝位置。4.2 手動配置PATH與環(huán)境變量通用方法如果你通過編譯源碼或其他方式將不同版本的GCC安裝到了自定義目錄例如/opt/gcc-13.2.0/那么管理它們的最佳方式是通過環(huán)境變量PATH。假設(shè)你編譯安裝的g在/opt/gcc-13.2.0/bin/g而系統(tǒng)自帶的在/usr/bin/g。方法一臨時切換針對當(dāng)前Shell會話export PATH/opt/gcc-13.2.0/bin:$PATH這行命令將自定義路徑前置到PATH中Shell會優(yōu)先從這里查找命令。這只對當(dāng)前打開的終端窗口有效。方法二永久為用戶配置推薦編輯你的Shell配置文件~/.bashrc用于Bash~/.zshrc用于Zsh。# 在文件末尾添加 export MY_GCC_HOME/opt/gcc-13.2.0 export PATH$MY_GCC_HOME/bin:$PATH export LD_LIBRARY_PATH$MY_GCC_HOME/lib64:$MY_GCC_HOME/lib:$LD_LIBRARY_PATHPATH確保系統(tǒng)能找到g命令。LD_LIBRARY_PATH至關(guān)重要它告訴系統(tǒng)運(yùn)行時鏈接器去哪里找這個新版本GCC自帶的共享庫如libstdc.so。如果不設(shè)置編譯出的程序在運(yùn)行時可能會因?yàn)殒溄拥较到y(tǒng)舊的庫而崩潰或報錯。保存文件后執(zhí)行source ~/.bashrc使配置生效。實(shí)操心得管理多個自定義安裝的編譯器時我習(xí)慣為每個版本創(chuàng)建一個獨(dú)立的腳本文件例如enable-gcc13.sh里面寫好上述的export命令。當(dāng)需要切換時直接source enable-gcc13.sh清晰且互不干擾。絕對不要隨意覆蓋/usr/bin下的系統(tǒng)編譯器那會破壞系統(tǒng)其他組件的依賴關(guān)系。5. 從源碼編譯安裝GCC獲取最新版當(dāng)你確實(shí)需要最新版本而所有倉庫都無法滿足時就需要手動編譯。這是一項(xiàng)耗時且需要耐心的任務(wù)。第一步安裝必要的依賴編譯GCC本身需要一個可用的C和C編譯器“自舉”過程以及一些庫。通常用系統(tǒng)自帶的舊版gcc來編譯新版gcc。# Ubuntu/Debian sudo apt install build-essential wget m4 flex bison libgmp-dev libmpfr-dev libmpc-dev # CentOS/RHEL/Fedora sudo dnf groupinstall Development Tools sudo dnf install wget m4 flex bison gmp-devel mpfr-devel libmpc-devel這些庫GMP, MPFR, MPC是GCC編譯所必需的多精度數(shù)學(xué)庫。第二步下載GCC源碼前往 GNU鏡像列表 或直接到 GCC官方FTP 下載最新穩(wěn)定版的源碼包如gcc-13.2.0.tar.gz。使用wget下載wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz tar xf gcc-13.2.0.tar.gz cd gcc-13.2.0第三步下載依賴庫關(guān)鍵步驟GCC源碼包不包含上述的GMP、MPFR、MPC庫的源碼。運(yùn)行自帶腳本可以自動下載并配置它們./contrib/download_prerequisites這個腳本會下載正確版本的依賴庫并創(chuàng)建符號鏈接。如果網(wǎng)絡(luò)不通這一步會失敗你需要手動處理非常麻煩。確保它能成功運(yùn)行。第四步配置編譯選項(xiàng)在源碼目錄外創(chuàng)建一個構(gòu)建目錄避免污染源碼。mkdir build cd build然后運(yùn)行configure腳本進(jìn)行配置。以下是一個常用配置示例../configure --prefix/opt/gcc-13.2.0 \ --disable-multilib \ --enable-languagesc,c \ --enable-threadsposix \ --enable-checkingrelease \ --with-system-zlib--prefix/opt/gcc-13.2.0指定安裝目錄。強(qiáng)烈建議安裝到/opt或/usr/local下的自定義路徑不要使用默認(rèn)的/usr以免覆蓋系統(tǒng)編譯器。--disable-multilib在64位系統(tǒng)上禁用編譯32位庫的支持可以簡化編譯過程。--enable-languagesc,c只編譯C和C前端減少編譯時間。如果你還需要Fortran、Go等可以加上。--enable-threadsposix啟用POSIX線程支持。--enable-checkingrelease進(jìn)行release級別的檢查比--enable-checkingyes更快。--with-system-zlib使用系統(tǒng)的zlib庫。第五步編譯與安裝配置成功后開始編譯。這個過程非常消耗CPU和內(nèi)存且時間很長從半小時到數(shù)小時不等取決于機(jī)器性能。make -j$(nproc)-j$(nproc)表示使用與CPU核心數(shù)相同的線程進(jìn)行并行編譯以最大化利用硬件資源。編譯成功后沒有報錯進(jìn)行安裝sudo make install這會將所有文件安裝到--prefix指定的目錄/opt/gcc-13.2.0下。第六步配置環(huán)境變量參考4.2節(jié)將/opt/gcc-13.2.0/bin加入PATH并設(shè)置好LD_LIBRARY_PATH。6. 常見問題排查與解決實(shí)錄即使按照步驟操作你也可能會遇到一些問題。這里記錄了一些典型場景和解決方法。6.1 安裝失敗依賴問題或網(wǎng)絡(luò)問題問題現(xiàn)象執(zhí)行sudo apt install g或類似命令時報錯“無法定位軟件包”或“依賴關(guān)系無法滿足”。排查與解決更新軟件源首先運(yùn)行sudo apt update或?qū)?yīng)發(fā)行版的更新命令確保本地包索引是最新的。檢查網(wǎng)絡(luò)連接確保你的系統(tǒng)可以訪問互聯(lián)網(wǎng)上的軟件倉庫??梢試L試ping一個外網(wǎng)地址或者用curl測試下載。檢查軟件源配置對于Debian/Ubuntu檢查/etc/apt/sources.list文件及其/etc/apt/sources.list.d/目錄下的文件確認(rèn)源地址是否正確、是否被注釋。對于企業(yè)內(nèi)網(wǎng)可能需要配置代理或內(nèi)部鏡像源。嘗試更完整的包名在某些發(fā)行版如較舊的CentOS中包名可能有細(xì)微差別。使用包管理器的搜索功能apt search g或dnf search gcc-c。啟用額外的倉庫例如在CentOS上確保EPEL倉庫已啟用sudo dnf install epel-release。6.2 編譯測試程序時報錯找不到頭文件或庫問題現(xiàn)象g test.cpp時報錯fatal error: iostream: No such file or directory。排查與解決確認(rèn)g已正確安裝g --version能正常輸出。安裝C標(biāo)準(zhǔn)庫開發(fā)包極少數(shù)情況下g包可能沒有自動安裝標(biāo)準(zhǔn)庫的頭文件和靜態(tài)庫。在Ubuntu上可以安裝libstdc-XX-devXX是版本號如11。但通常安裝g時已經(jīng)包含。檢查多版本環(huán)境如果你配置了多個版本可能當(dāng)前PATH指向的g版本不對或者對應(yīng)的庫路徑LD_LIBRARY_PATH沒有設(shè)置。用which g查看當(dāng)前使用的是哪個路徑下的g。6.3 運(yùn)行時錯誤GLIBCXX版本不匹配問題現(xiàn)象程序編譯成功但運(yùn)行時崩潰報錯信息中包含GLIBCXX_3.4.XX not found。原因分析這是最經(jīng)典的ABI兼容性問題。你的程序是用新版本g例如g-13編譯的它鏈接了新版本的libstdc.so.6庫。但在運(yùn)行環(huán)境中系統(tǒng)的動態(tài)鏈接器找到的是舊版本例如系統(tǒng)自帶的g-11提供的的該庫其中不包含新版本編譯器使用的某些符號以GLIBCXX_開頭的版本標(biāo)識。解決方案靜態(tài)鏈接C標(biāo)準(zhǔn)庫不推薦用于分發(fā)編譯時加上-static-libstdc選項(xiàng)。這會將標(biāo)準(zhǔn)庫靜態(tài)打包進(jìn)你的可執(zhí)行文件使文件體積變大但避免了運(yùn)行時依賴。g -o myapp -static-libstdc myapp.cpp將新版庫與程序一同分發(fā)將你編譯環(huán)境中的新版libstdc.so.6位于/opt/gcc-13.2.0/lib64/或類似位置復(fù)制到目標(biāo)機(jī)器的某個目錄并通過設(shè)置運(yùn)行時的LD_LIBRARY_PATH環(huán)境變量讓程序優(yōu)先加載它。在目標(biāo)機(jī)器上安裝新版本的libstdc包對于Debian/Ubuntu可以安裝libstdc6的更高版本如果倉庫有。但升級系統(tǒng)基礎(chǔ)庫有風(fēng)險可能影響其他軟件。最佳實(shí)踐對于生產(chǎn)環(huán)境盡量使用與目標(biāo)運(yùn)行環(huán)境相同或更老版本的編譯器進(jìn)行構(gòu)建。這就是為什么Docker容器化構(gòu)建如此流行——你可以輕松創(chuàng)建一個與生產(chǎn)環(huán)境一致的編譯環(huán)境。6.4 性能調(diào)優(yōu)與常用編譯選項(xiàng)安裝好編譯器后了解幾個關(guān)鍵的編譯選項(xiàng)能極大提升開發(fā)效率。優(yōu)化級別-O0不優(yōu)化默認(rèn)編譯快適合調(diào)試。-O1或-O基本優(yōu)化在編譯時間和代碼大小、執(zhí)行速度間取得平衡。-O2推薦優(yōu)化級別進(jìn)行大量優(yōu)化不顯著增加代碼體積是發(fā)布版本的常用選擇。-O3激進(jìn)優(yōu)化可能會進(jìn)行循環(huán)展開、向量化等可能增加代碼體積有時性能提升不明顯甚至下降需要測試。-Os優(yōu)化代碼大小。調(diào)試信息-g選項(xiàng)在可執(zhí)行文件中加入調(diào)試符號配合GDB使用。通常與-O0或-O1一起用于調(diào)試版本。警告信息-Wall開啟大部分常用警告-Wextra開啟更多警告-Werror將所有警告視為錯誤。良好的習(xí)慣是始終使用-Wall -Wextra并在CI/CD中開啟-Werror保證代碼質(zhì)量。C標(biāo)準(zhǔn)指定使用-stdc11,-stdc14,-stdc17,-stdc20,-stdc23來指定遵循的語言標(biāo)準(zhǔn)。例如g -stdc17 -O2 -o myapp myapp.cpp。一個健壯的編譯命令示例g -stdc17 -Wall -Wextra -O2 -marchnative -pipe -o release_app main.cpp helper.cpp-marchnative生成針對當(dāng)前CPU架構(gòu)優(yōu)化的代碼不可移植。-pipe在編譯階段使用管道而非臨時文件通信可以加快編譯速度消耗更多內(nèi)存。7. 集成開發(fā)環(huán)境IDE中的編譯器配置最后如果你使用圖形化的IDE如CLion VS Code with C extensions Qt Creator還需要在IDE中正確配置編譯器路徑。以VS Code為例安裝C/C擴(kuò)展ms-vscode.cpptools后你需要配置c_cpp_properties.json文件按CtrlShiftP輸入C/C: Edit Configurations (UI)更直觀。編譯器路徑在“Compiler path”中填入你希望使用的g的完整路徑。例如/usr/bin/g或/opt/gcc-13.2.0/bin/g。你可以用which g命令查看當(dāng)前Shell使用的路徑。C標(biāo)準(zhǔn)在“C Standard”中選擇如c17。包含路徑IntelliSense引擎需要知道頭文件在哪里。通常IDE會自動檢測。如果遇到找不到頭文件的錯誤可以在“Include path”中添加路徑如/opt/gcc-13.2.0/include/c/13.2.0。在Qt Creator中需要在Tools - Options - Kits - Compilers中添加自定義編譯器指定C和C編譯器的路徑然后在一個Kit中選擇這個編譯器。核心要點(diǎn)IDE只是一個前端它最終調(diào)用的是你在終端里使用的那個g命令。確保IDE配置的編譯器路徑、版本與你期望的一致并且相關(guān)的環(huán)境變量特別是通過自定義腳本設(shè)置的在啟動IDE的環(huán)境中生效。有時從圖形界面啟動的IDE可能讀取不到你在~/.bashrc中設(shè)置的環(huán)境變量這時需要考慮在全局配置文件如/etc/environment中設(shè)置或者在IDE的啟動腳本、項(xiàng)目配置中指定。