用ninja编译linux,如何使用Ninja快速编译LLVM和Clang

本文介绍了如何在Linux上使用Ninja工具快速编译LLVM和Clang,对比了传统的Make工具,Ninja只需10到20分钟即可完成编译。详细步骤包括安装Ninja和CMake,下载源代码,创建编译文件,最后进行编译和安装,并给出了遇到问题的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Make工具编译LLVM是很是耗时的。每每须要三四个小时。可是使用goolge开源的ninja编译LLVM只须要10到20分钟。html

本文以llvm3.3为例,演示在linux上编译和安装过程。java

第一步 安装ninja和cmake

1 获取并编译安装 ninjalinux

$ git clone git://github.com/martine/ninja.git

$ cd ninja

$ ./bootstrap.py

$ sudo cp ninja /usr/local/bin/

Q: warning: A compatible version of re2c (>= 0.11.3) was not found;git

changes to src/*.in.cc will not affect your build.github

A: re2c 是一个用于编写快速灵活的词法分析器的工具.json

$sudo apt-get install re2cbootstrap

2 安装 cmake(至少须要 2.8.9):

用sudo apt-get install cmake获得的是 2.8.7–2013.3.7

可从http://www.cmake.org/cmake/resources/software.html获 取 最 新 的

cmake, 再编译.

编译 cmake 须要 QT4 和 java:

Q:Could NOT find Qt4 (missing: ...

A:sudo apt-get install qt-sdk

Q:fatal error: ext2fs/ext2 fs.h: No such file or directory

A: sudo apt-get install e2fslibs-dev

Q:fatal error: curses.h: No such file or directory

A: sudo apt-get install libncurses5-devbash

第二步下载源代码

llvm全部的项目的代码的svn库都在:

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

能够使用svn拷贝

1 下载llvm3.3$ svn co http://llvm.org/svn/llvm-project/llvm/branches/release_33/ llvm3.3

2 下载clang3.3到llvk3.3/tools$ cd llvm3.3/tools/

$ svn co http://llvm.org/svn/llvm-project/cfe/branches/release_33/ clangsvn

3 下载Compiler RT到llvm3.3/projects$ cd ../projects

$ svn co http://llvm.org/svn/llvm-project/compiler-rt/branches/release_33/ compiler-rt工具

第三步 编译和安装

1 创建build目录$ cd llvm3.3/

$ mkdir build

2 产生ninja编译文件#能够使用-DCMAKE_INSTALL_PREFIX指定安装目录

$ cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=/opt/llvm3.3 ..

$ ln -s ../build/compile_commands.json ..

3 编译

$ ninja

4 安装

$ sudo ninja install

5 把安装目录加入的环境变量PATH中

能够在home目录的.bashrc中加入

export PATH=/opt/llvm3.3/bin/:$PATH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值