天天看点

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

重新配置动态库。

再试就没有了。

继续阅读