LLVM+Clang编译安装卸载

您所在的位置:网站首页 安装llvm时找不到clang LLVM+Clang编译安装卸载

LLVM+Clang编译安装卸载

2023-12-05 01:57| 来源: 网络整理| 查看: 265

下载的是最新版本的代码,LLVM+Clang编译安装比较耗硬件资源,8核16G内存300G硬盘,硬盘是分两块,一块100G,另一块是200G。即使顺利跑完,保守估计也要3个小时,编译目录生成的文件有86G。

遇到几次内存和磁盘不够的问题,一一解决,下面是我的编译安装步骤和遇到的一些过程。

前期准备工作

1. 安装svn

yum install subversion

2. 升级cmake,升级到3.0以上版本。

[root@VM-100-213-centos ~]# cmake --version cmake version 3.9.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

3. 升级gcc,升级到4.8以上版本。升级gcc会遇到比较多的问题,具体网上找找,也有很多解决办法,我升级到9.0以上版本。

[root@VM-100-213-centos ~]# gcc --version gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

编译安装过程

1. 创建目录,下载代码

下载llvm核心源码

mkdir llvm-clang

cd llvm-clang

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

下载Clang源码 

cd llvm/tools

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

下载Clang工具源码

cd ../../llvm/tools/clang/tools

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

下载cimpiler-rt

 cd ../../llvm/projects

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

创建编译目录,跟llvm目录平级,执行cmake、make、make install

[root@VM-100-213-centos ~/llvm-clang]# ll total 8 drwxr-xr-x 18 root root 4096 Nov 12 15:46 build drwxr-xr-x 17 root root 4096 Nov 11 12:21 llvm

[root@VM-100-213-centos ~/llvm-clang]# cd build/ [root@VM-100-213-centos ~/llvm-clang/build]# cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" ../llvm

问题记录

1. 内存不足引发的编译链接失败

现象一

[ 88%] Linking CXX shared library ../../../../lib/libclang.so collect2: fatal error: ld terminated with signal 9 [Killed] compilation terminated. make[2]: *** [tools/clang/tools/libclang/CMakeFiles/libclang.dir/build.make:812: lib/libclang.so.10] Error 1 make[2]: *** Deleting file 'lib/libclang.so.10' make[1]: *** [CMakeFiles/Makefile2:56172: tools/clang/tools/libclang/CMakeFiles/libclang.dir/all] Error 2 make: *** [Makefile:152: all] Error 2

现象二 

 [ 91%] Linking CXX executable ../../../../../../bin/clangd-fuzzer collect2: error: ld returned 1 exit status make[2]: *** [tools/clang/tools/extra/clangd/fuzzer/CMakeFiles/clangd-fuzzer.dir/build.make:215: bin/clangd-fuzzer] Error 1 make[1]: *** [CMakeFiles/Makefile2:55124: tools/clang/tools/extra/clangd/fuzzer/CMakeFiles/clangd-fuzzer.dir/all] Error 2 make: *** [Makefile:152: all] Error 2

失败了还看不到有效的错误日志,网上有人指出是内存不够,打开或调大虚拟内存。

top命令查看内存,发现每次失败的时候,内存使用率接近100%;执行free命令查看,虚拟内存关闭。

[root@VM-100-213-centos ~/llvm-clang/build]# free               total        used        free      shared  buff/cache   available Mem:       16165976      380968       91392       42064    15693616    15647720 Swap:             0           0           0

打开虚拟内存,设置4G的虚拟内存空间。

[root@VM-100-213-centos ~/llvm-clang/build]# cd /data/ [root@VM-100-213-centos /data]#

[root@VM-100-213-centos /data]#mkdir swap

[root@VM-100-213-centos /data]#dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096

[root@VM-100-213-centos /data]#du -sh /data/swap/swapfile  4.1G    /data/swap/swapfile

[root@VM-100-213-centos /data]# mkswap /data/swap/swapfile  mkswap: /data/swap/swapfile: warning: wiping old swap signature. Setting up swapspace version 1, size = 4194300 KiB no label, UUID=71faadb8-f7a4-466b-aecc-f1d2a8e0d291

[root@VM-100-213-centos /data]# swapon /data/swap/swapfile [root@VM-100-213-centos /data]# free               total        used        free      shared  buff/cache   available Mem:       16165976      384692       92868       42064    15688416    15643764 Swap:       4194300           0     4194300 

2. 磁盘空间不足导致的编译链接失败

按上面步骤设置了虚拟内存后,还是编译失败,查看磁盘空间,光是编译目录,就有86G,相当大

# du -h --max-depth=1 ./llvm-clang/ 1.4G    ./llvm-clang/llvm 86G     ./llvm-clang/build 87G     ./llvm-clang/

根目录是挂载到100G的硬盘上,df命令查看,磁盘使用率已经到100%。

解决办法,将整个目录move到另外一块200G的磁盘上,创建一个软链接,这样一是可以解决磁盘空间不足的问题,二是解决继续编译因路径修改导致的编译错误。

#move /root/llvm-clang /data/

#ln -s /data/llvm-clang /root

# ll /root/ total 126168 lrwxrwxrwx 1 root root        17 Nov 12 15:38 llvm-clang -> /data/llvm-clang/

 继续编译安装

#cd /root/llvm-clang/build

#make

#make install

到此主要问题都解决了。

归纳起来主要几个原因:

内存不足导致链接失败磁盘空间不足导致链接失败硬件配置不够整个过程需要耗费大量时间。 卸载llvm

安装llvm,目测磁盘至少50G,相当耗费磁盘空间。如果不用,可以卸载

cd build

xargs rm < install_manifest.txt 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3