天天看點

Ubuntu clang編譯修複問題stddef.h not found

說起來有些慚愧,我在Ubuntu編譯clang後,一個小demo都沒編譯出來

#include <stdio.h>

int main(){
    printf("Hello World!");
	return 0;
}

           

想生成LLVM IR 學習梳理一下。

clang -emit-llvm -S hello.c
           

報的是個

stddef.h not found

的錯誤,網上查了一圈,13年的文章說是clang在Ubuntu上的bug?

我是基于LLVM 8.0.1建構的工程(建構可參考),首先重新建構clang,生成clang相關的庫和頭檔案。

cmake -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;libcxx;" -DLLVM_TARGETS_TO_BUILD="X86" -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER=/usr/bin/g++ ..
           

編輯/etc/profile

# 設定clang C++的搜尋路徑,解決.h not found的問題
export CPLUS_INCLUDE_PATH=/usr/include/c++/5:/usr/include/c++/5/backward:/usr/include/x86_64-linux-gnu/c++/5:/usr/local/include:/usr/include:/usr/include/linux/:/usr/include/x86_64-linux-gnu
           

clang 需要 z3庫,安裝上。

ldconfig

重新配置動态庫。

再試就沒有了。

繼續閱讀