下载与编译LLVM和Clang

作者: 霜天渔火 | 来源:发表于2019-06-01 23:52 被阅读3次

    最近写编译器,要用到LLVM,记录一下在Linux下编译和安装的过程。

    准备

    LLVM编译器架构的前端是Clang,狭义的LLVM是指它的后端。

    我们可以通过SVN来下载LLVM和Clang最新的源码。

    首先如果没有安装SVN,使用如下命令安装:

    sudo apt-get install subversion
    

    下载

    现在开始下载源码,如果用SVN下载失败还可以到官网直接下载压缩包,然后解压到对应的目录里。注意下载的版本。

    首先进入到你想要下载LLVM的目录(以下称为myfolder_path):

    cd myfolder_path
    

    下载LLVM源码至llvm文件夹:

    svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
    

    进入llvm/tools,下载Clang源码至clang文件夹:

    cd myfolder_path/llvm/tools
    svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
    

    再进入clang/tools,下载Clang-extra-Tools源码至extra文件夹:

    cd myfolder_path/llvm/tools/clang/tools
    svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
    

    回到llvm/tools,下载链接器(非必须):

    cd myfolder_path/llvm/tools
    svn co http://llvm.org/svn/llvm-project/lld/trunk lld
    

    还是在这个目录,下载循环和数据优化器(非必须):

    cd myfolder_path/llvm/tools
    svn co http://llvm.org/svn/llvm-project/polly/trunk polly
    

    到llvm/projects目录,下载Compiler-RT:

    cd myfolder_path/llvm/projects
    svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
    

    还有一些非必须的如Libomp, libcxx and libcxxabi和测试套件,这里不需要用到。

    编译

    不能在源码所在的文件夹直接编译安装,可以在myfolder_path/llvm目录下新建一个build文件夹并进入:

    cd myfolder_path/llvm
    mkdir build
    cd build
    

    用CMake生成Makefile,选择Release而不是Debug是为了缩短编译时间:

    cmake -G "Unix Makefiles" -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_BUILD_TYPE=Release ../
    

    编译:

    cmake --build .
    

    或者

    make -j4
    

    安装:

    cmake --build . --target install
    

    或者

    make install
    

    测试

    LLVM Tutorial网站上有详细的使用LLVM实现完整编译器的教程。

    可以用它的代码生成章节3.6. Full Code Listing的例程来测试是否成功安装好了所需的所有工具。

    将它提供的源码toy.cpp拷贝下来,用如下命令编译:

    clang++ -g -O3 toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core` -o toy
    

    -O3表示三级优化,注意是大写字母O不是数字0。还有使用llvm-config工具的语句是用反撇号括起来的,不是单引号。

    运行:

    ./toy
    

    如果出现ready>提示,则运行成功,你可以输入一段Kaleidoscope语言
    编写的代码,看看结果。

    相关文章

      网友评论

        本文标题:下载与编译LLVM和Clang

        本文链接:https://www.haomeiwen.com/subject/yhuztctx.html