1. 程式人生 > >解決clang"fatal error: 'stdio.h' file not found"問題

解決clang"fatal error: 'stdio.h' file not found"問題

先看一下下面這個”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"

選項,因為在Windows下我使用的是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不存在上面的問題。