参考官方开发手册:Clang - Getting Started (llvm.org)
使用GitHub官方项目llvm / llvm-project下载速度偏慢且容易下载失败,推荐使用国内gitee的镜像Gitee 极速下载 / LLVM。
下载完成后,可以参考项目中的rootdir/README.md文件,进行简单配置,也可以参考clang子项目的配置进行。在此,我根据个人目标诉求研究编译前端,也就只需要配置clang子项目就好,且在X86_64平台进行环境搭建,所以编译目标还可以进一步精简。
熟悉cmake的可以根据rootdir/llvm/CMakeLists.txt中的编译参数进行配置,后续也会根据个人经历简单对cmake进行介绍。可以参考cmake官方手册。
简单记录一下自己的构建过程,仅供参考:
step1 工作目录切换到项目根目录中
cd rootdir
step2 新建构建目录(注:主要是防止构建产出破坏原项目布局,且容易管理构建对象,可按需研究对象进行构建目录的划分建立)
mkdir build_clang_debug
step3 工作目录切换到构建目录中
cd build_clang_debug
step4 执行cmake生成构建目标及构建选项指令(注:我是在X86_64平台研究学习,也不涉及跨平台编译,所以后端支持也只需要X86即可,可根据需要进行后端目标平台的支持,具体可参考rootdir/llvm/CMakeLists.txt中的LLVM_ALL_TARGETS字段查看支持的平台;需要说明的一点——构建默认按debug模式进行构建,如需使用release模式进行构建,需要添加cmake构建选项-DCMAKE_BUILD_TYPE=Release)
cmake -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -G "Unix Makefiles" ../llvm
step5 构建目标(注:make指令选项,参考官方手册)
make clang -j4
编译过程中的异常处理记录
使用官方项目进行构建,最常遇见问题是
collect2: ld terminated with signal 9
这个问题是内存大小不够导致的,可以通过增加交换区来解决。
参考:
collect2: ld terminated with signal 9 错误解决办法
若还有其他问题,欢迎留言探讨。
网友评论