• Centos 7 编译安装llvm 8.0.0


    参考连接:https://www.cnblogs.com/BinBinStory/p/7499527.html

    https://blog.csdn.net/llwy1428/article/details/95473542

    https://blog.csdn.net/u011181989/article/details/91334478

       

    环境:centos 7.6 最小化安装

    需要准备的包以及说明

    Centos 7.6 everything 包 用于挂载本地镜像安装相关依赖包

    llvm-8.0.0.src.tar compiler-rt-8.0.0.src.tar clang-tools-extra-8.0.0.src.tar cfe-8.0.0.src.tar llvm8.0.0相关软件包

    cmake-3.9.6.tar.gz 编译llvm需要的cmake包,版本不低于3.4.3

    gcc-5.5.0.tar.gz 编译需要的gcc版本不能低于5.1,centos 7.6原带的版本是4.X

    gmp-4.3.2.tar.bz2 升级gcc版本所需要的依赖包

    mpc-0.8.1.tar.gz 升级gcc版本所需要的依赖包

    mpfr-2.4.2.tar.bz2 升级gcc版本所需要的依赖包

       

    开始,如果想一次报错都不出现,请把文档看完,先解决编译安装llvm的基础环境之后再安装,本次安装使用的全新的操作系统,关闭了防火墙和selinux,尝试直接编译llvm,并遇见报错,解决报错的过程。

       

    上传软件包到/root下,升级gcc版本的主程序和依赖包上传到/root/gcc目录下

       

    解压llvm相关的软件包

    tar xvf cfe-8.0.0.src.tar

    tar -xvf clang-tools-extra-8.0.0.src.tar

    tar -xvf compiler-rt-8.0.0.src.tar

    tar -xvf llvm-8.0.0.src.tar

       

    执行改名,移动操作,让clangclang-tools-extracompiler-rt就可以和llvm一起编译

    mv cfe-8.0.0.src clang

    mv clang/ llvm-8.0.0.src/tools/

    mv clang-tools-extra-8.0.0.src extra

    mv extra/ llvm-8.0.0.src/tools/clang/

    mv compiler-rt-8.0.0.src compiler-rt

    mv compiler-rt llvm-8.0.0.src/projects/

       

    llvm-8.0.0.src同级目录上新建目录,名称为build-8.0.0

    mkdir build-8.0.0

    cd build-8.0.0/

    然后执行cmake编译

    cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-8.0.0.src/

    提示没有cmake,下面挂载光盘安装cmake

    yum install -y cmake

    再次执行cmake编译

    报错cmake版本太低,不能低于3.4.3

    下面解决cmake版本低的问题,升级cmake到3.9.6版本,首先准备好包,

    安装gcc gcc-c++包以执行编译

    yum install gcc gcc-c++ -y

    卸载原有的cmake

    yum remove cmake -y

    解压所新版本的cmake并编译安装

    tar -zxvf cmake-3.9.6.tar.gz

    cd cmake-3.9.6

    ./configure --prefix=/usr/local/cmake

    make -j3

    make install

    创建软连接

    ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

    查看cmake版本

    cmake -version

    至此,cmake版本升级结果,下面再次尝试编译llvm

    cd /root/build-8.0.0/

    cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-8.0.0.src/

    又报错了

    这次报错提示c++版本为4.8.5,推荐的版本不能低于5.1

    下面开始升级c++版本

    进入之前准备好的gcc目录,解压,安装gcc软件包和相关依赖包并且创建连接

    tar xvf gcc-5.5.0.tar.gz

    cp gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2 /root/gcc/gcc-5.5.0

    cd gcc-5.5.0

    yum install -y bzip2

    tar -xjf mpfr-2.4.2.tar.bz2

    ln -sf mpfr-2.4.2 mpfr

    tar xjf gmp-4.3.2.tar.bz2

    ln -sf gmp-4.3.2 gmp

    tar xzf mpc-0.8.1.tar.gz

    ln -sf mpc-0.8.1 mpc

    编译gcc-c++和gcc

    ./configure --prefix=/usr/local/gcc --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib

    执行make 和make install

    时间较长,使用make -j3 使用3线程执行make ,使用3线程make大概执行了40分钟

    make -j3

    make install

    添加环境变量

    vi /etc/profile

    export PATH=/usr/local/gcc/bin:$PATH

    生效

    source /etc/profile

    查看gcc版本

    已经升级成功

    下面继续llvm的安装

    依然报错版本不够,有可能的系统存在多个版本的gcc cmake还没有默认使用的自带的gcc 还是旧版本,这时候给添加编译参数,指定gcc路径。命令如下

    cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/c++ -DCMAKE_C_COMPILER=/usr/local/gcc/bin/gcc ../llvm-8.0.0.src/

    依然报错

    报错配置不完整,但是程序已经更新了下面的gcc的变量,所以只需要再次执行cmake编译即可

    cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/c++ -DCMAKE_C_COMPILER=/usr/local/gcc/bin/gcc ../llvm-8.0.0.src/

    cmake编译成功,执行make -j3 操作

    make -j3

    时间较长,后续还有报错,耐心等待。

    报错了,这个报错是因为升级gcc之后动态链接库中缺少GLIBCXX_3.4.20GLIBCXX_3.4.21文件导致,以下为修改该错误的过程

    查看现有动态链接库的文件

    strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

    查找系统上所有的libstdc++.so文件

    find / -name "libstdc++.so*"

    复制需要的libstdc++.so文件到/usr/lib64目录

    cp /usr/local/gcc/lib64/libstdc++.so.6.0.21 /usr/lib64

    删除旧版本的libstdc++.so.6文件

    cd /usr/lib64/

    rm -rf libstdc++.so.6

    创建链接到新版本的libstdc++.so.6文件

    ln -s libstdc++.so.6.0.21 libstdc++.so.6

    查看更新后的libstdc++.so.6文件包含的动态链接库

    strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

    可以看到上面报错缺少的GLIBCXX_3.4.20GLIBCXX_3.4.21文件已经存在

    继续make j3

    cd /root/build-8.0.0/

    make -j3

    已经解决百分之28时的报错。至此错误都已解决,静静等待make完毕,速度较慢,4核8G的虚拟机,估计要40分钟甚至更多。

    make 完成

    下面执行make install

    安装完成

    cd /usr/local/clang/

    ./clang --version

       

       

       

  • 相关阅读:
    【Oracle】优化器之RBO与CBO
    【Oracle11g】16_数据字典和动态性能视图
    AXI总线介绍
    Verilog 加法器和减法器(8)-串行加法器
    状态机实例-寄存器拷贝
    状态机状态最小化
    vcs+Makefile实现简单的testbench
    quartus II输入原理图及仿真步骤
    Directx11代码下载
    触发器的时序参数与时序分析
  • 原文地址:https://www.cnblogs.com/withfeel/p/12626374.html
Copyright © 2020-2023  润新知