說起來有些慚愧,我在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
重新配置動态庫。
再試就沒有了。