GCC和clang的爱恨情仇

到底什么是clang?

clang代表"a C language family frontend for LLVM", 最早是Apple发起,源于不满GCC不能更友好修改ObjC的需求,Apple另起炉灶。因为ObjC在苹果有足够高的地位,clang一开始支持的语言就包含C/C++/ObjC. clang是编译器前端,意味着它要搭配后端,LLVM就是官方标配的后端。Android平台也逐渐从GCC转向clang.

为什么在macOS下发现gcc和clang经常代表一个东西?

这是苹果的智慧,也是软链接的功效。苹果之前是用开源社区的GCC编译器,后来恼了,另起炉灶做了clang+LLVM, 注意准确的说GCC作用等同于clang + LLVM. 但为了兼容,也为了让喜欢用GCC的程序员遇到找不到GCC的问题,就偷偷将GCC软链接到clang. 可以用man gcc/clang或者ls -l命令来获取它们的真身。

Xcode和GCC/clang的爱恨情仇

Xcode4之前,苹果一直在用GCC作为编译器,至少前端在用。Xcode 4.2开始,替换GCC改成clang做前端 + LLVM, 依然保留GCC可选. 从Xcode 5开始,苹果移除了GCC,完全用clang + LLVM. 这里有趣的地方就在于Xcode 5之前,苹果保留了llvm-gcc作为前端编译器,本质是GCC.

C++ Language Support - Xcode - Apple Developer


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
猫头虎2 小时前
GoLand 2025.3 最新变化:值得更新吗?
ide·windows·macos·pycharm·编辑器·intellij-idea·idea
_可乐无糖6 小时前
内网穿透工具使用指南:ngrok 和 cpolar
安全·macos·云计算
不爱吃糖的程序媛7 小时前
鸿蒙PC命令行开发 macOS 上解决 pkg-config 命令未安装的问题
macos·华为·harmonyos
淘气淘的宝宝8 小时前
MAC intel 迁移至M4后brew及iterm2配置
macos
不爱吃糖的程序媛8 小时前
解决鸿蒙PC命令行编译 macOS 上 cp 命令参数冲突问题
macos·harmonyos·策略模式
Bruce_Liuxiaowei9 小时前
Mac_Linux 查询网站IP地址:4个核心命令详解
linux·tcp/ip·macos
逐梦苍穹9 小时前
ClamAV在macOS上的离线查杀与定时扫描实战(含clamd加速)
人工智能·安全·macos·策略模式·杀毒
iOS阿玮20 小时前
1V1 社交精准收割 3.6 亿!40 款马甲包 + 国内社交难度堪比史诗级!
uni-app·app·apple
Bigger21 小时前
Tauri(21)——窗口缩放后的”失焦惊魂”,游戏控制权丢失了
前端·macos·app
Bigger1 天前
Tauri (20)——为什么 NSPanel 窗口不能用官方 API 全屏?
前端·macos·app