Linux系统怎么安装Clang编译器

老敏君_9204

老敏君_9204

2026-08-14

214人浏览

原创

clang/llvm是独立于gcc的编译工具链,非升级替代;ubuntu/debian用apt装clang+libc++-dev,centos 7需启用scl装llvm-toolset-7-clang并显式加-stdlib=libc++链接c++17标准库,否则因abi不匹配报undefined reference。

linux系统怎么安装clang编译器

直接用包管理器装,别源码编译——除非你明确需要某个未发布的特性或调试 LLVM 本身。源码编译耗时长、易卡在 llvm-tblgen、依赖版本敏感,日常开发纯属自找麻烦。

Ubuntu/Debian:用 apt 装 clang + libc++

Clang 和 GCC 是两套独立工具链,不能混用标准库。只装 clang 不够,必须同步装 LLVM 官方 C++ 库:

  • sudo apt update && sudo apt install clang libc++-dev libc++1
  • 验证:clang --versionclang++ --version 输出应一致;若仍显示旧版(如 3.4.2),说明没走新源,可能系统默认源太老
  • 想装新版(比如 Clang-18)?运行官方脚本:wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 18

CentOS/RHEL:注意 SCL 和 llvm-toolset 版本匹配

CentOS 7 和 RHEL 7 必须启用 Software Collections(SCL),否则 yum install clang 拿到的是系统自带的过时版本(Clang 3.4):

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载
  • CentOS 7:sudo yum install centos-release-scl && sudo yum install llvm-toolset-7-clang(对应 Clang 5.0,仅基础可用)
  • RHEL 8+ 或 CentOS 8+:sudo dnf install clang llvm-toolset(原生支持,无需 SCL)
  • 装完后必须手动启用:scl enable llvm-toolset-7 bash(否则 clang++ 仍调用老 ABI)

clang++ 编译 C++17 项目时 undefined reference 怎么办

这不是 bug,是设计行为:clang++ 默认仍链接 GCC 的 libstdc++,但头文件路径和 ABI 不对齐,尤其遇到 std::string_viewstd::optional 这类 C++17 新类型时直接报符号未定义。

  • 必须显式指定标准库:clang++ -stdlib=libc++ test.cpp
  • 漏掉 -stdlib=libc++,clang++ 就只是个“长得像 GCC 的前端”,C++14/17 特性基本不可用
  • 如果用了 CMake,加这行:set(CMAKE_CXX_STANDARD_LIBRARIES "-stdlib=libc++"),或更稳妥地在 cmake 命令里传:-DCMAKE_CXX_FLAGS="-stdlib=libc++"

让 cmake / make 默认走 clang,但不破坏系统 gcc

千万别改 /usr/bin/gcc 符号链接——rpm-build、内核模块编译、很多系统工具都硬依赖原生 GCC,一动就崩。

  • 临时切换:CC=clang CXX=clang++ make
  • CMake 项目:cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
  • 用户级长期生效(仅影响当前用户 shell):echo 'export CC=clang' >> ~/.bashrc && echo 'export CXX=clang++' >> ~/.bashrc

最容易被忽略的一点:Clang 和 libc++ 是绑定关系,不是“装了 clang 就自动配好一切”。-stdlib=libc++ 不是可选项,是功能开关;而 libc++-dev 包不装,连头文件都没有,编译直接失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3570

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3113

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2153

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5130

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4822

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2893

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2405

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2619

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Libclang tutorial
Libclang tutorial

共0课时 | 0人学习