问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

LLVM安装指南:新手也能秒变高手

创作时间:
作者:
@小白创作中心

LLVM安装指南:新手也能秒变高手

引用
CSDN
6
来源
1.
https://blog.csdn.net/A1_3_9_7/article/details/144700584
2.
https://blog.csdn.net/qq_54605328/article/details/137866360
3.
https://blog.csdn.net/m0_74811974/article/details/136140731
4.
https://blog.csdn.net/witton/article/details/136261729
5.
https://wangjunwei.top/books/learn_llvm_17/chapters/01_Installing_LLVM.html
6.
https://www.cnblogs.com/apachecn/p/18193970

在计算机行业快速发展的今天,掌握LLVM这样的关键技术不仅能提升你的技术实力,还能让你在求职市场上更具竞争力。作为现代编译器的基础框架,LLVM被广泛应用于各种编程语言的编译器开发中。无论你是想从事编译器开发、性能优化,还是对底层技术感兴趣,学习LLVM都是一个不错的选择。

01

为什么选择LLVM?

LLVM(Low Level Virtual Machine)是一个开源的编译器基础设施项目,它提供了一套模块化和可重用的编译器工具链。LLVM最初是作为研究项目开发的,但现在已被广泛应用于各种商业和开源项目中,包括苹果的Clang编译器、Google的Android NDK以及许多其他重要的软件项目。

LLVM的主要优势在于其模块化设计和强大的优化能力。它将编译过程分为前端、中间层和后端三个部分,使得开发者可以独立开发和优化每个部分。这种设计不仅提高了编译器的灵活性,还使得LLVM能够支持多种编程语言和目标架构。

02

安装方式选择

LLVM提供了三种主要的安装方式:预编译包、源码编译和包管理器。每种方式都有其适用场景和优缺点。

预编译包

  • 适用场景:适合系统配置较低或快速体验LLVM的用户
  • 优点:安装简单快捷
  • 缺点:可能缺少一些自定义功能,版本更新不及时

源码编译

  • 适用场景:需要自定义功能或进行实验性开发的用户
  • 优点:可以获取最新功能,完全控制编译选项
  • 缺点:安装过程相对复杂,需要一定的开发环境准备

包管理器

  • 适用场景:仅用于快速测试,不适合修改源代码的场景
  • 优点:安装方便
  • 缺点:版本可能过时,无法自定义编译选项

对于新手来说,推荐从源码编译开始,因为这种方式能让你对LLVM的结构有更深入的了解,也为后续的学习和开发打下坚实的基础。

03

源码编译详细步骤

环境准备

在开始编译之前,你需要确保系统中已经安装了以下工具:

  • CMake (≥3.13.4)
  • GCC (≥5.1.0)
  • Python (≥2.7)

这些工具在大多数Linux发行版中都可以通过包管理器轻松安装。例如,在Ubuntu中,你可以使用以下命令安装:

sudo apt-get install cmake gcc python

下载源码

打开LLVM官方网站:https://releases.llvm.org/,选择你想要下载的版本。这里以10.0.1版本为例。

你需要下载三个主要的源码包:

  • LLVM source code
  • Clang source code
  • compiler-rt source code

下载完成后,将这些文件解压到同一目录下。解压后的文件夹分别命名为llvm-10.0.1.srcclang-10.0.1.srccompiler-rt-10.0.1.src

接下来,你需要将Clang和compiler-rt的源码移动到LLVM源码树的相应位置:

mv clang-10.0.1.src llvm-10.0.1.src/tools/clang
mv compiler-rt-10.0.1.src llvm-10.0.1.src/projects/compiler-rt

CMake配置

在与llvm-10.0.1.src同级的目录下创建一个build文件夹,用于存放构建生成的文件:

mkdir build
cd build

使用CMake生成构建文件。这里以Unix Makefiles为例:

cmake -G "Unix Makefiles" \
      -DCMAKE_BUILD_TYPE=Release \
      -DLLVM_ENABLE_ASSERTIONS=On \
      ../llvm-10.0.1.src

让我们解释一下这些参数的含义:

  • -G "Unix Makefiles":指定生成器为Unix Makefiles
  • -DCMAKE_BUILD_TYPE=Release:设置构建类型为Release,这将启用优化并禁用调试信息
  • -DLLVM_ENABLE_ASSERTIONS=On:启用断言检查,这对于开发和调试非常有帮助

编译和安装

配置完成后,你可以开始编译LLVM了:

make -j4

这里使用了-j4参数,表示同时使用4个CPU核心进行编译。如果你的机器有更多核心,可以适当增加这个数字以加快编译速度。

编译完成后,使用以下命令进行安装:

sudo make install

这将把LLVM的工具和库文件安装到系统目录中。默认情况下,安装路径为/usr/local,你也可以在CMake配置阶段通过-DCMAKE_INSTALL_PREFIX参数来更改这个路径。

04

常见问题及解决方案

在安装过程中,你可能会遇到一些常见问题。这里列举几个新手经常遇到的问题及解决方案:

  1. 缺少头文件错误

    例如,你可能会看到类似fatal error: sys/ustat.h: No such file or directory的错误。这通常是因为某些系统头文件缺失。解决方法是在代码中避免直接包含这些头文件,而是使用预定义的结构体大小。

  2. 编译错误:数组大小为负数

    这个问题通常出现在某些架构的系统上,可以通过修改sanitizer_platform_limits_posix.ccsanitizer_platform_limits_posix.h文件中的代码来解决。具体修改方法可以参考[[2]]的详细说明。

05

验证安装

安装完成后,你可以通过以下命令验证LLVM是否安装成功:

clang --version
llvm-dis --version

如果显示了版本信息,那么恭喜你,LLVM已经成功安装到你的系统中了!

掌握LLVM不仅能让你在技术上更进一步,还能为你的职业发展开辟新的道路。随着网络安全和高性能计算需求的不断增加,熟悉LLVM这样的底层技术将使你在求职市场上更具竞争力。所以,不要犹豫,现在就开始你的LLVM学习之旅吧!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号