文档首页 > > 移植指南> 移植LLVM

移植LLVM

分享
更新时间:2020/06/03 GMT+08:00

介绍

简要介绍

LLVM是一个自由软件项目,它是一种编译器基础设施,以C++写成,包含一系列模块化的编译器组件和工具链,用来开发编译器前端后端。它是为了任意一种编程语言而写成的程序,利用虚拟技术创造出编译时期链接时期运行时期以及“闲置时期”的最优化。

LLVM的主要子项目是:

LLVM Core库提供了现代的,与源和目标无关的优化器,并为许多流行的CPU(以及一些较不常见的CPU!)提供了代码生成支持。

Clang是“ LLVM原生” C/C++/Objective-C编译器,旨在提供惊人的快速编译(例如,在调试配置中编译Objective-C代码时,编译速度比GCC快3倍),非常有用的错误和警告消息,以及提供一个用于构建出色的源代码级工具的平台。

LLDB项目建立在LLVM和Clang提供的库的基础上,以提供出色的本机调试器。

libc++和libc++ ABI项目提供了C++标准库的符合标准和高性能的实现,包括对C++11和C++14的完全支持。

OpenMP子项目提供了一个OpenMP运行时,可用于Clang中的OpenMP实现。

polly项目使用多面体模型实现了一套缓存局部性优化以及自动并行化和矢量化功能。

libclc项目旨在实现OpenCL标准库。

LLD项目是一个新的链接器。这是系统链接程序的直接替代,并且运行速度更快。

语言:C++

一句话描述:模块化和可重复使用的编译器和工具链技术的集合

开源协议:custom:Apache 2.0 with LLVM Exception

建议的版本

建议使用版本为“llvm-9.0.0”

环境要求

云服务器要求

本文以KC1实例测试,配置如表1所示。

表1 云服务器配置

项目

说明

规格

kc1.large.2 | 2vCPUs | 4GB

磁盘

系统盘:高IO(40GB)

操作系统要求

操作系统要求如表2所示。

表2 操作系统要求

项目

说明

下载地址

CentOS

7.6

在公共镜像中已提供。

Kernel

4.14.0-115

在公共镜像中已提供。

配置编译环境

  1. 安装wget依赖工具。

    yum install wget -y

  2. 升级GCC版本。

    鲲鹏默认的GCC版本为4.8.5,编译llvm时候,需要不低于GCC5.1的版本。请参考https://www.huaweicloud.com/kunpeng/software/gcc.html对GCC版本进行升级

  3. 升级CMake版本。

    配置要求CMake最低版本为3.4.3,请参考https://www.huaweicloud.com/kunpeng/software/cmake.html对CMake进行安装或者版本升级。

获取源码

获取“llvm-9.0.0”源码包。

cd /usr/local/src

mkdir llvm

cd llvm

wget http://releases.llvm.org/9.0.0/llvm-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/cfe-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/compiler-rt-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/libcxx-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/libcxxabi-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/libunwind-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/lld-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/lldb-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/openmp-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/polly-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/clang-tools-extra-9.0.0.src.tar.xz

wget http://releases.llvm.org/9.0.0/test-suite-9.0.0.src.tar.xz

编译和安装

  1. 解压软件包。

    tar -xvf llvm-9.0.0.src.tar.xz

  2. 进入gcc的安装目录。

    cd llvm-9.0.0.src

    mkdir b

    cd b

  3. 生成Makefile文件

    cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON

  4. 编译安装llvm。

    “-j”参数可利用多核CPU加快编译速度,在本示例中,使用的是2核CPU,所以此处为“-j2”。

    可通过下述命令查询CPU核数:

    cat /proc/cpuinfo| grep "processor"| wc -l

    make -j2

    make install

运行和验证

  1. 查询安装的llvm工具。

    输入llvm-然后按Tab键,回显信息如下,则表示llvm安装了如下工具。
    llvm-addr2line   llvm-config      llvm-cxxmap      llvm-elfabi      llvm-lipo        llvm-mt          llvm-profdata    llvm-size        llvm-tblgen      
    llvm-ar          llvm-cov         llvm-diff        llvm-exegesis    llvm-lto         llvm-nm          llvm-ranlib      llvm-split       llvm-undname     
    llvm-as          llvm-c-test      llvm-dis         llvm-extract     llvm-lto2        llvm-objcopy     llvm-rc          llvm-stress      llvm-xray        
    llvm-bcanalyzer  llvm-cvtres      llvm-dlltool     llvm-jitlink     llvm-mc          llvm-objdump     llvm-readelf     llvm-strings     
    llvm-cat         llvm-cxxdump     llvm-dwarfdump   llvm-lib         llvm-mca         llvm-opt-report  llvm-readobj     llvm-strip       
    llvm-cfi-verify  llvm-cxxfilt     llvm-dwp         llvm-link        llvm-modextract  llvm-pdbutil     llvm-rtdyld      llvm-symbolizer 

  2. 选择一个工具查看版本信息。

    llvm-nm --version

    回显信息如下,则表示该工具安装成功,其他工具验证类似。
    LLVM (http://llvm.org/):
      LLVM version 9.0.0
      Optimized build with assertions.
      Default target: aarch64-unknown-linux-gnu
      Host CPU: tsv110

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问