虚拟机macos中构建llvm、clang并配置Xcode
安装虚拟机+macos,并安装brew:
- 安装vmware:https://www.bilibili.com/video/BV1Wo4y1E7fc/
- 安装最新版的macos:极限苹果-Mac论坛-提供Mac软件和macOS苹果系统镜像下载
- 下载并安装brew:版本要低,我装的是4.3.5(Release 4.3.5 · Homebrew/brew · GitHub),不然怎么装都失败.
- 安装cmake:brew install cmake
- 安装llvm:brew install llvm
- 安装llvm:brew install ninja (ninja比cmake在构建llvm的时候效率高很多,建议安装)
或者参照后续手动下载源码并构建、安装llvm和clang:
- 下载llvm-project-18.1.8.src压缩包:Download LLVM releases
- 解压至llvm-project
- 进入llvm-project:cd llvm-project
- 新建文件夹mybuilder:mkdir build
- 进入mybuilder:cd build
- 执行指令:(来源:Clang - Getting Started和Getting Started with the LLVM System — LLVM 20.0.0git documentation和Building - 🐛 LLDB)
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='clang;lldb' -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' ../llvm
- 构建llvm:
ninja
- 安装llvm和clang:
sudo ninja install
- 验证安装是否成功:
llvm-config --cxxflags --ldflags --system-libs --libs core
配置Xcode:
新建一个CLT项目
点击项目进入配置界面,在配置前,先执行下面指令来获取配置信息:
llvm-config --cxxflags --ldflags --system-libs --libs
输出结果:

然后,在TARGETS的Build Settings下,搜索library search,双击Library Search Path后面的空白处,点击+,复制上述输出结果中-L开头的:/usr/local/lib

然后,搜索header search,双击Header Search Path后面的空白处,点击+,复制上述输出结果中-I开头的:/usr/local/include

然后,搜索other linker flags,双击Other Linker Flags后面的空白处,点击+,复制上述输出结果中-l开头的的:-lLLVMWindowsManifest -lLLVMXRay ...... -lLLVMDemangle -lm -lz -lcurses -lxml2

点击+,继续添加llvm-project/clang/include/clang中的文件夹下的文件夹名,按照如下格式:-lclangAnalysis -lclangAPINotes ... -lclangTooling (如果编译时报错显示某一个找不到,比如-lclangConfig和-lclangCorssTU,那就删掉对应的即可)

然后,你就可以在main.cpp中添加下述内容并成功运行了:
#include "llvm/ADT/StringRef.h"
#include "clang/Basic/Diagnostic.h"
如何使用cmake编译和构建项目
- 开始编译你的项目:
step1: mkdir buildstep2: cd buildstep3: cmake ../project_namestep4: make 或者 cmake --build .step5(不一定必要):make -install
补充:如何独立构建llvm和clang
参照Getting Started with the LLVM System — LLVM 20.0.0git documentation执行操作:
cd llvm-projectcmake -G Ninja -S llvm -B llvm_build \-DLLVM_INSTALL_UTILS=ON \-DCMAKE_INSTALL_PREFIX='Users/username/Desktop/llvm_install'ninja -C llvm_build installcmake -G Ninja -S clang \-B clang_build \-DLLVM_EXTERNAL_LIT=llvm_build/utils/lit \-DLLVM_ROOT=../llvm_installninja -C clang_build# 说明:如果加引号就写绝对路径,如果不加引号就写相对路径
相关文章:
虚拟机macos中构建llvm、clang并配置Xcode
安装虚拟机macos,并安装brew: 安装vmware:https://www.bilibili.com/video/BV1Wo4y1E7fc/安装最新版的macos:极限苹果-Mac论坛-提供Mac软件和macOS苹果系统镜像下载下载并安装brew:版本要低,我装的是4.3.5…...
Java 中的 @SneakyThrows 注解详解:简化异常处理的利与弊
在 Java 开发中,异常处理是一个不可避免的重要部分。我们经常需要处理各种检查型异常(checked exceptions),这有时会导致代码变得冗长且难以维护。为了简化异常处理,Lombok 提供了一个强大的注解——SneakyThrows。本文…...
系统编程 day11 进程(线程)3
fork函数的总结: 总结对进程学习之中的回收函数wait wait函数: 1.获取子进程的退出状态 2.回收资源------会让僵尸态的子进程销毁 注:1.wait函数本身是一个阻塞操作,会使调用者阻塞 2.父进程要获得子进程的退出状态 子进程&…...
[ Python 原理分析 ]如何实现用户实现博客文章点赞-物联网Python
目录 一、前言 二、Python爬虫 三、详细操作 3.1 建立基本工程 3.2 获取文章列表 3.2.1 找到获取文章请求 3.2.2 分析获取请求 3.2.3 构建获取请求 3.2.4 调试打印 3.3 实现点赞操作 3.3.1 判断点赞状态 3.3.2 找到点赞请求 3.2.3 分析点赞请求 3.2.4 构建点赞请…...
【47 Pandas+Pyecharts | 杭州二手房数据分析可视化】
文章目录 🏳️🌈 1. 导入模块🏳️🌈 2. Pandas数据处理2.1 读取数据2.2 过滤数据2.3 行政区处理2.4 地址处理2.5 房屋信息处理2.6 面积处理2.7 楼层处理2.8 年份处理2.9 房价处理2.10 删除不用的列2.11 数据类型转换2.12 查看…...
C++入门基础知识13
C 的关键字(接上一篇博文)!! 10. const_cast用法: 该运算符用来修改类型的 const 或 volatile 属性。除了 const 或 volatile 修饰之外, type_id 和 expression 的类型是一样的。常量指针被转化成非常量指针…...
IP地址证如何实现HTTPS访问?(内网IP、公网IP)
IP地址证书(全称为IP地址的SSL/TLS证书)是实现通过IP地址进行HTTPS访问的关键。以下是实现这一目标的详细步骤: 一、选择证书颁发机构(CA) 1.选择支持IP证书的CA:并非所有证书颁发机构都提供为IP地址颁…...
东土科技车规级网络芯片获批量应用
东土科技孵化的我国第一颗国产汽车芯片名录的车规级TSN交换网络芯片,于近期获得国家新能源汽车技术创新中心10万片芯片订单,将规模化应用于车载网关,赋能新一代自主可控汽车网络通信架构。 车规级TSN交换网络芯片于2021年流片成功࿰…...
nvidia系列教程-AGX-Orin pcie扩展M.2磁盘调试笔记
目录 前言 一、AGX-Orin pcie接口介绍 二、原理图连接 三、SDK配置 四、M.2磁盘调试 总结 前言 NVIDIA Jetson AGX Orin 是一款强大的嵌入式平台,广泛应用于 AI 推理、机器人和自动驾驶等领域。在扩展存储方面,PCIe 接口的 M.2 SSD 是一个常见的选择。本篇博客将记录如何…...
haproxy七层代理知识点以及各种配置
1.为什么用haproxy 当后端主机有一个出现问题了的时候,我们需要访问的流量全部打到正常工作的后端主机,所以我们需要后端检测,lvs没有后端检测,所以就需要用到haproxy 2.负载均衡 2.1 什么是负载均衡 负载均衡,Loa…...
uniapp自定义浮动图标、列表布局
uniapp自定义浮动图标 <button class="fab" @click="goPage"><image src="../../../static/yiyuan.png" mode="" style="width: 60rpx;height:60rpx;"></image></button>.fab {z-index: 100;positi…...
学习嵌入式入门(十)高级定时器简介及实验(下)
一、高级定时器互补输出带死区控制实验 上图中,CH1 输出黄色的 PWM,它的互补通道 CH1N 输出绿色的 PWM。通过对比,可以 知道这两个 PWM 刚好是反过来的,CH1 的 PWM 为高电平期间,CH1N 的 PWM 则是低电平, 反…...
使用python在不改变原有excel的格式下,修改指定单元格格式
需求 有一个账单,需要生成一个副本,但是需要将交易员列隐藏,不能改变原有的格式 xlsx的文件容易实现,使用openpyxl实现 xls的文件使用xlrdxlutil实现 参考了https://segmentfault.com/q/1010000008270267 class GenCopyReport(o…...
MySQL数据库:详细安装与配置指南
目录 背景: 一.下载过程(MySQL数据库): 二.安装过程(MySQL数据库): 三.验证MySQL是否安装成功 背景: MySQL 是一个流行的开源关系数据库管理(RDBMS),由瑞典MySQL AB公司开发,后俩该公司被Sun Microsystems收购,Sun Microsyste…...
python爬虫代理IP实战
Python爬虫代理IP实战指南 在进行网络爬虫时,使用代理IP可以有效隐藏真实IP地址,避免被目标网站封禁。本文将通过实际示例,展示如何在Python中使用代理IP进行网络爬虫。 1. 环境准备 首先,确保您已安装Python和所需的库。在本示…...
样式,常用组件
3、代码实现登录的思路 设置属性的成员方法都有统一的命名规范: set()//就是某种属性的名字 父窗口:组件嵌套到那个主窗口中,这个主窗口就是父窗口 第一步:创建一个标签对象用来显示登录界面的标题 QLabe…...
Django Project | 云笔记练习项目
文章目录 功能整体架构流程搭建平台环境子功能先创建用户表 并同步到数据库1.用户注册密码存储 -- 哈希算法唯一索引引发的重复问题 try登陆状态保持 -- 详细看用户登录状态 2. 用户登录会话状态时间 cookie用户登录状态校验 3. 网站首页4.退出登录5.笔记模块 列表页添加笔记 …...
Zookeeper的监听机制
Zookeeper的监听机制是Zookeeper框架中一个至关重要的功能,它实现了分布式系统中数据状态变化的实时通知,使得客户端能够及时响应并处理这些变化。下面将详细解析Zookeeper的监听机制及其原理,包括监听器的注册、事件通知的处理、监听器的特点…...
Swift withAnimation 动画完成监听
在ios17中withAnimation有completion方法可以监听动画完成,但是低于ios17没有,需要自定义一个监听器,原理就是通过AnimatableModifier可以监听到值的didSet修改,我们就可以调用回调函数。 代码 // 动画完成监听 struct Animatabl…...
场外期权交易:找到适合你的那一款
各位期权爱好者们!今天咱们来聊聊在进行场外期权交易时,怎么去评估和选择适合自己风险承受能力的期权产品。 第一,你得对自己有个清楚的认识。想想看,你是那种激进型的冒险家,还是保守型的稳健派呢?了解自己…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...
【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战
🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...
