说起来有些惭愧,我在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
重新配置动态库。
再试就没有了。