在 rtthread studio 中,使用 C++ 的標(biāo)準(zhǔn)庫里,會(huì)出現(xiàn)報(bào)錯(cuò),fatal error: bits/c++config.h: No such file or directory。
這是因?yàn)槠?bits/c++config.h 并不是和其標(biāo)準(zhǔn)庫文件放在同一相對位置內(nèi)。
那么我們試看下其標(biāo)準(zhǔn)庫的目錄結(jié)構(gòu)。
首先找到,RT-Thread Studio 的安裝目錄,然后找到其工具鏈的位置。
${studio_folder}/repo/Extract/ToolChain_Support_Packages/ARM/GNU_Tools_for_ARM_Embedded_Processors/5.4.1/arm-none-eabi
明顯,studio 使用的是 arm-gcc 工具鏈。接下來,我們找到 C++ 的標(biāo)準(zhǔn)庫目錄。
./include/c++/5.4.1
這里面放的是標(biāo)準(zhǔn)庫文件。很容易看到里面存在一個(gè) bits 文件夾。但可惜的是里面沒有 c++config.h 這個(gè)頭文件。
不要?dú)怵H,我們再找下,發(fā)現(xiàn)里面有個(gè)文件夾,名字叫做 arm-none-eabi 。居然含有 bits ,而且還真在里面找到這個(gè)缺失的文件。
========================== 解決方法 ==========================
打開構(gòu)建配置

然后在 C++ 的 Include 下加入這個(gè)搜索路徑。

========================== 疑惑 ==========================
我對比過 mingw64 下的 gcc 結(jié)構(gòu),和 arm-gcc 一樣,把這類文件放到一個(gè) x86* 的目錄下。猜其應(yīng)是也 CPU 的架構(gòu)有關(guān),換言之,就是把標(biāo)準(zhǔn)庫里非跨平臺(tái)的部分放在這。
但問題是使用 mingw 時(shí)不用額外聲明這個(gè)搜索路徑。
猜測原因是,電腦端的 gcc 固定的運(yùn)行架構(gòu),故相應(yīng)軟件已經(jīng)默認(rèn)添加了這個(gè)路徑。而作為嵌入式的編譯器,或許為了處理不同類型架構(gòu),所以就交由用戶自行聲明。