第1章:构建LLVM时节约资源

WSL2 Ubuntu22.04编译LLVM避坑指南:解决卡死、内存不足等常见问题 本文详细介绍了在WSL2 Ubuntu22.04环境下编译LLVM时可能遇到的卡死、内存不足等常见问题及其解决方案。通过优化编译参数、调整内存配置和使用高效链接器等技巧,帮助开发者顺利完成LLVM编译,提升开发效率。 阅读详情

LLVM是许多令人惊叹的工业和学术项目所采用的最先进的编译器优化和代码生成框架,例如JavaScript引擎中的即时编译(JIT)编译器和机器学习(ML)框架。它是构建编程语言和二进制文件工具的有用工具箱。然而,尽管该项目具有强大的稳健性,但其学习资源分散,文档也不是最佳的。因此,即使是对LLVM有一定经验的开发者,其学习曲线也相当陡峭。本书旨在通过以实用的方式为您提供LLVM中常见和重要领域的知识来解决这些问题——向您展示一些有用的工程技巧,指出鲜为人知但方便的功能,并举例说明。

作为一名LLVM开发者,从源代码构建LLVM一直是您应该做的第一件事。鉴于LLVM如今的规模,这项任务可能需要几个小时才能完成。更糟糕的是,为了反映更改而重新构建项目可能也需要很长时间,并妨碍您的生产力。因此,了解如何使用正确的工具以及如何为您的项目找到最佳构建配置以节省各种资源(尤其是您宝贵的时间)至关重要。

在本章中,我们将涵盖以下主题:

  • 通过更好的工具减少构建资源
  • 通过调整CMake参数节约构建资源
  • 学习如何使用GN(LLVM的另一种构建系统)及其优缺点

技术要求

在写这本书的时候,LLVM只有几个软件要求:

  • 支持C++14的C/C++编译器
  • CMake
  • CMake支持的构建系统之一,例如GNU Make或Ninja
  • Python(2.7也可以,但我强烈建议使用3.x)
  • zlib

这些项目的确切版本会不时变化。有关更多详细信息,请访问https://llvm.org/docs/GettingStarted.html#software。

本章假设您以前构建过LLVM。如果不是这种情况,请执行以下步骤:

  1. 从GitHub获取LLVM源代码树的副本:

    $ git clone https://github.com/llvm/llvm-project
    
  2. 通常,默认分支应该可以无错误构建。如果您想使用更稳定的发布版本,例如发布版本10.x,请使用以下命令:

    $ git clone -b release/10.x https://github.com/llvm/llvm-project
    
  3. 最后,您应该创建一个构建文件夹,在其中调用CMake命令。所有构建工件也将放置在此文件夹中。可以使用以下命令完成此操作:

    $ mkdir .my_build
    $ cd .my_build
    

通过更好的工具减少构建资源

正如本章开头所提到的,如果您使用默认(CMake)配置构建LLVM,通过调用CMake并以以下方式构建项目,整个过程很有可能需要几个小时才能完成:

$ cmake ../llvm
$ make all

通过简单地使用更好的工具和更改一些环境可以避免这种情况。在本节中,我们将介绍一些指南,以帮助您选择正确的工具和配置,这些工具和配置既可以缩短您的构建时间,又可以改善内存占用。

用Ninja替换GNU Make

我们可以做的第一个改进是使用Ninja构建工具(

从 Token 到 Agent:一文串起 AI 大模型核心概念 摘要:本文系统解析了现代AI系统的八大核心概念:Token(语言处理的最小单位)、Context(AI的短期记忆)、Prompt(指令接口)、Tool(能力扩展器)、MCP(工具生态协议)、Agent(自主智能体)和AgentSkill(专业技能封装)。文章揭示了这些概念如何共同构成AI从基础语言理解到自主决策的技术脉络,重点阐述了Token对计算成本的影响、Prompt工程的重要性、Tool如何突破AI的能力边界,以及Agent如何通过"感知-规划-执行-反思"循环完成复杂任务。最后指 阅读详情

相关推荐

【论文笔记】LIME: low-light image enhancement via illumination map estimation

【论文笔记】LIME: low-light image enhancement via illumination map estimation 一篇低光图像增强,引用超1000次的经典论文

weixin_45565519的博客 1793

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

超详细的Burp Suite安装使用

‌Burp Suite是一个强大的Web应用安全测试工具,适用于网络安全专业人士进行自动化网络应用程序的安全测试。‌ 它提供了在Windows和Kali Linux上安装和激活Burp Suite Professional的简便步骤,帮助用户快速集成并启用强大的网络扫描和渗透测试功能。Burp Suite的特点包括易于安装、良好的兼容性、内置的自动化工具、优秀的用户体验以及详细的教程,使得无论是安全领域的新手还是经验丰富的专家,都能轻松上手并高效地进行安全测试。此外,Burp Suite还支持扩展功能的使用

Dreams°的博客 2641

谁还攥着旧的类加载器:Metaspace OOM 的元数据记账、类卸载条件与泄漏定位解析

MetaSpace区是JVM内存管理中的关键部分,负责存储类元数据。随着Java 8的推出,MetaSpace取代了PermGen区,但其灵活性也带来了新的挑战,尤其是在动态类加载和频繁类更新的场景下,容易导致MetaSpace内存溢出(OOM)问题。本文探讨了MetaSpace OOM的根本原因,包括类加载器泄漏、内存管理不当和GC效率低下等,并提供了一系列调优策略和解决方案,帮助开发者有效排查和防止此类问题的发生,确保应用程序的稳定性和高可用性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 15万+

【WRF-Urban】URBPARM_LCZ.TBL 查找表解释及内容

URBPARM_LCZ.TBL 查找表解释及内容

WW、forever的博客 1754

040、全志V853低功耗AI视觉平台的ISP调优——电池供电场景下的画质与功耗平衡

本文分享了全志V853 AI视觉平台在电池供电场景下的ISP调优经验。作者通过实际项目踩坑案例,揭示了V853 ISP的特殊性:不同于主流平台,其ISP与CPU共享时钟域,降噪能力有限,需特别注意功耗控制。关键优化策略包括:关闭无效ISP模块、优化Sensor联动时钟、采用场景自适应配置、开发快速启动模式等。特别指出V853个体差异大,量产需考虑高低温影响。文章强调V853的ISP功耗优化需从寄存器级别精打细算,不能简单套用其他平台经验,建议选型时单独评估ISP功耗,避免续航缩水。

zzfmlxs的博客 25

〖Python网络爬虫实战㊴〗- 极验滑块介绍(一)

我们对这个看到不陌生,现在,大多数平台都是用的是这个平台的验证码,我们今天来学习一下,极验滑块验证码的逆向,其他的都差不多。我们了解到这个平台提供了许多验证的方式。现在大多数还是滑块比较多,滑块验证码是一种常见的验证方式,其主要思路为用户通过拖动滑块来完成验证。具体流程如下:首先,用户需要进行滑块验证码的操作,网站会向用户展示一张图片,图片上通常会有一些随机的文字和背景干扰。用户需要通过鼠标拖动滑块,将其移动到指定位置上,通常是将滑块拖动到图片的相应位置上来完成验证。

爱吃饼干的小白鼠的博客 2879

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 96

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 第1章:玩转LLVM
下一篇: 第2章:探索LLVM的构建系统特性
段舸
博客等级 码龄3年 533粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值