解決clang"fatal error: 'stdio.h' file not found"問題
阿新 • • 發佈:2018-12-14
先看一下下面這個”hello world”程式
#include <stdio.h>
int main(void)
{
printf("hello!\n");
return 0;
}
在Windows下使用”gcc test.c”編譯這個程式不會出現任何問題,但如果使用”clang test.c”編譯,在控制檯視窗就會報"fatal error: 'stdio.h' file not found"
,原因就在於clang本身並沒有配備完整的工具鏈,解決方法是首先將MinGW的bin目錄到新增系統環境變數中,然後在使用clang編譯時新增"--target=i686-pc-mingw32"
Mingw-w64
所以相應的就應該新增"--target=i686-w64-mingw32"
選項。 如果你使用
Vim + ale外掛
,會發現在Vim裡面也存在這種情況,開啟~/vimfile/bundle/ale/doc/ale-c.txt
可以看到在預設情況下ale對clang開啟的選項為'-std=c11 -Wall'
,因此只需在vimrc中寫入
let g:ale_c_clang_options = '--target=i686-w64-mingw -std=c11 -Wall'
即可,如果你使用的不是Mingw-w64,而是官方原版的MinGW就寫入
let g:ale_c_clang_options = '--target=i686-pc-mingw32 -std=c11 -Wall'
對於C++,則在vimrc中繼續寫入
let g:ale_cpp_clang_options = '--target=i686-w64-mingw -std=c++14 -Wall'
如果使用的是syntastic可以參考相應的幫助文件修改syntastic-c-clang_check
選項,另外在Linux不存在上面的問題。