使用 LLVM 的另一种场景是向现有语言添加特定领域的扩展 。Nvidia 使用 LLVM 创建 Nvidia CUDA 编译器,允许语言添加对 CUDA 的本地支持,将其编译为正在生成的本地代码的一部分(更快),而不是通过它附带的库调用(更慢) 。
4.使用各种语言的 LLVM使用 LLVM 的典型方法是使用开发者熟悉的语言编写代码(当然,它支持 LLVM 的库) 。
两种常见的语言选择是 C 和 C++ 。许多 LLVM 开发人员默认使用这两者之一,原因如下:
- LLVM 本身是用 C++ 编写的 。
- LLVM 的 API 在 C 和 C++ 中可用 。
- 许多语言的开发往往以 C/C++ 为基础
需要注意的是,一些与 LLVM 语言绑定可能不如其他语言那么完整 。例如,对于 Python,有很多选择,但每个选择的完整性和实用性各不相同 。
如果对如何使用 LLVM 库来构建语言有兴趣,LLVM 有一个教程,使用 C++ 或 OCAML,它会引导你创建一种称为 Kaleidoscope 的简单语言 。
5.LLVM 不做什么LLVM 不解析语言的语法, 许多工具已经可以完成这项工作,例如: lex/yacc、flex/bison、Lark 和 ANTLR,所以 LLVM是解析与编译分离的 。
有 LLVM 不提供原语的语言的公共部分 。如:LLVM 不提供垃圾收集器机制,但它确实提供了实现垃圾收集的工具,方法是允许用元数据标记代码,从而更容易编写垃圾收集器 。
但是,不排除 LLVM 最终可能添加用于实现垃圾收集的本机机制的可能性 。
6.和LLVM相关的WebAssembly运行时WasmerWasmer 是在非浏览器上下文中运行 Wasm 的一种方式,提供基于 WebAssembly 的超轻量级容器 。专注于支持在任何平台上运行 WASM 代码,为其他跨平台运行时(例如 Java)提供了潜在的替代方案 。

文章插图
Wasmer 在 GitHub 上将自己描述为“一个快速且安全的 WebAssembly 运行时,它使超轻量级容器可以在任何地方运行:从桌面到云、边缘和物联网IOT设备” 。
Wasmer使用熟悉的工具和喜欢的语言,将所有内容编译为 WebAssembly 。可以在任何操作系统上运行它或将其嵌入到其他语言中 。WasmEdgeWasmEdge 是一个轻量级、高性能和可扩展的 WebAssembly 运行时, 它是当今号称最快的 Wasm VM 。WasmEdge的用例包括:现代 Web 应用程序架构(同构和 Jamstack 应用程序)、边缘云上的微服务、无服务器 SaaS API、嵌入式功能、智能合约和智能设备等方方面面 。

文章插图
WasmEdge 是世界上第一个正式的 CNCF WebAssembly 运行时项目,可以设想它将作为边缘云的关键任务轻量级运行时,在 CNCF 的开源云计算领域发挥重要作用 。
WasmEdge 可以运行从 C/C++、Rust、Swift、AssemblyScript 或 Kotlin 源代码编译的标准 WebAssembly 字节码程序 。同时,它还受到标准语言和编译器工具链的支持,例如 LLVM、Rustc 和 emscripten 。
更多关于Wasmer、WasmEdge的内容可以继续在我的主页阅读,已经单独撰文《全网最火的5+优秀 WebAssembly 运行时!》进行详细介绍 。
7.获取源代码并构建 LLVM教程下载 LLVM
git clone --depth 1 https://github.com/llvm/llvm-project.git配置和构建 LLVM 和 Clang
cd llvm-projectcmake -S llvm -B build -G <generator> [options]可用的 generator 包括:Ninja、Unix Makefiles 、Visual Studio、Xcode执行 build
cmake --build . [--target <target>]// 默认target(即 cmake --build . 或 make)将构建所有 LLVM 。基本构建一个基本的 CMake 和构建/测试调用,它只构建 LLVM 而没有其他子项目:cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE=Debugninja -C build check-llvm上面代码将使用调试信息设置 LLVM 构建,然后编译 LLVM 并运行 LLVM 测试 。独立构建独立构建针对系统上已存在的 clang 或 llvm 库的预构建版本构建子项目 。
可以使用来自 llvm 项目(如上所述)的标准签出的源代码来进行独立构建,但也可以从发布页面上可用的 tarball 中构建 。
对于独立构建,必须有一个 llvm 安装,它被正确配置为可以被其他项目的独立构建使用 。这可能是一个发行版提供的 LLVM 安装,或者可以自己构建它,如下所示:
推荐阅读
- 收视升至第一,央视又证明了自己的“眼光”,这次换李兰迪火了
- word文档背景颜色怎么去掉 word文档背景颜色怎么去掉改
- USB3.0速度不快谁背锅?小丑竟是自己
- 李玟事件升级!韩红发声那英评论破千万,好声音背后资本浮出水面
- 国家电网总部拟录用名单“火了”,仅有5人被聘用,学历才是亮点
- 美丽不止于外表:探索蓝色职业套裙背后的内在价值
- 水很深!骂李玟的导演是富三代背景强,总导看她脸色,曾想嫁吴京
- 亲妈是制片人,干妈是导演,20年都捧不红他,却在娶妻改名后火了起来
- 柳岩瘦到脱相,她的事业线也没了,暴瘦背后揭示了娱乐圈残酷一面
- 好声音导演背景遭扒!曝其上海房产多达一条街,入股公司大有来头
