LLVM安装和编译

发布于 2019-05-27  69 次阅读


此处以Ubuntu18.04为例

快速安装

搜索一下软件包

sudo apt search llvm

会发现有很多版本,我们安装需要的版本就行

sudo apt install llvm-6.0
sudo apt install clang-6.0

手动编译安装

单独编译llvm

llvm与clang都作为单独的组件以开源形式提供,可以单独编译它们,也可以组全在一起编译。我们先来看下,如何单独编译llvm。
注意,很多选项的介绍见文章的混合编译部分,用以提高编译效率和成功率
在http://releases.llvm.org/下载源码,然后解压
注意:编译不可以在解压后的文件夹内部编译,需要在外部新建一个文件夹,否则编译会失败!
执行以下命令,新建mybuilder目录,并进行编译配置。

mkdir mybuild
cd mybuild
cmake -G "Unix Makefiles" --enable-optimized --enable-targets=host-only  ../llvm-7.0.1.src

然后再执行以下命令开始编译:

cmake --build .

注意,此处如果电脑性能好,此处可以指定多线程来编译,将上面的指令替换为如下
(建议电脑内存8G及以上)

make -j10

如果出现CMAKE_CXX_COMPILER错误,则还需要安装一下build-essential编译包,这个包里包含了众多GNU的编译工具。命令:sudo apt install build-essential
如果出现c++: internal compiler error: Killed (program cc1plus)说明内存不足,需要拓展内存。

llvm和clang混合编译

首先下载llvm和clang的源码包并解压,把解压后的clang的源码包重命名,并移动到llvm-7.0.1.src/tools/目录下,最终效果为llvm-7.0.1.src/tools/clang/
然后在build文件夹里运行命令

cmake -G "Unix Makefiles" --enable-optimized --enable-targets=host-only -DCMAKE_BUILD_TYPE=Release  ../llvm-7.0.1.src

cmake -G <generator> [options] <path to llvm sources>

-G是指定编译器架构/工具(generators),其中一些generators如下(即编译工具):

  • Unix Makefiles
  • Ninja
  • Visual Studio
  • Xcode

可选项options如下:

  • -DCMAKE_INSTALL_PREFIX=directory 明确LLVM工具和库被安装的位置,默认在/usr/local下。
  • -DCMAKE_BUILD_TYPE=type Debug选项,默认就是使用Debug,可以改为Release减少不必要的文件。
  • -DLLVM_ENABLE_ASSERTIONS=On 编译时开启断言检查(assertion),默认就是开启
    要注意整个llvm和build的绝对路径中不要出现中文,否则会出问题。

编译时最好指定下面两个选项:
--enable-optimized 打开优化,默认情况下是关闭的。这样会生成大量 debug 信息,以致于产生的文件可能高达 9.4 G 之多,这可能很快耗尽磁盘空间导致编译失败。

--enable-targets=host-only 选择目标平台,默认情况下会生成所有平台的。这里设置成 host-only 只选择本机即可。

cmake会检查编译环境,如果没有报错,直接运行make命令即可开始编译。