10、Ubuntu-22.04安装gcc-12或者clang-20
ubuntu22.04 安装 gcc-12 或者 clang20
·
ubuntu-22.04 安装 gcc-12 和 g+±12
# 安装 gcc-12 和 g++-12
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-12 g++-12
# 查看安装的版本
gcc-12 --version
g++-12 --version
# 更改系统默认的 gcc 和 g++ 的指向
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-12 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
# 卸载 gcc-12 和 g++-12
sudo apt purge gcc-12 g++-12
sudo apt autoremove
# 验证是否卸载成功,若没有输出,则表示已卸载
dpkg -l | grep gcc-12
dpkg -l | grep g++-12
ubuntu-22.04 安装 clang20
# 方式一
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15CF4D18AF4F7421
sudo chmod 644 /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo rm -rf /var/lib/apt/lists/*
sudo apt clean
sudo apt update
sudo apt install -y clang-20 lldb-20 lld-20 clangd-20
# 方式二
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15CF4D18AF4F7421
sudo chmod 644 /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo rm -rf /var/lib/apt/lists/*
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
# 方式三
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git checkout llvmorg-20.1.0-rc2 # 切换到指定版本
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lld" ../llvm
make -j$(nproc)
sudo make install
# 例如选择方式三-自己手动编译安装完成后,更新系统的编译器链接选项
sudo update-alternatives --install /usr/bin/cc cc /usr/local/bin/clang 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/local/bin/clang++ 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/clang 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/clang++ 100
cc --version # 应显示 Clang 20
c++ --version # 应显示 Clang++ 20
gcc --version # 可能也显示 Clang(若配置了替代项)
g++ --version # 同上
# bin$ gcc --version
# clang version 20.1.0-rc2 (https://github.com/llvm/llvm-project.git 20621e2609ac49dcf01c4353dbfd69626cea3015)
# Target: x86_64-unknown-linux-gnu
# Thread model: posix
# InstalledDir: /usr/local/bin
# bin$
重置所有编译器链接到系统默认
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --set gcc /usr/bin/gcc
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --set g++ /usr/bin/g++
使用 clang20 编译, 测试
// main.c
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
编译
clang main.c -o main
如果报错:fatal error: ‘stddef.h’ file not found
# 查找一下
sudo find / -name "stddef.h"
# 根据自己的显示路径
# /usr/lib/gcc/x86_64-linux-gnu/12/include/stddef.h
# /usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h
# 然后选择设置方式(临时生效/永久生效)
# 临时生效(当前终端会话)
export C_INCLUDE_PATH="/usr/lib/gcc/x86_64-linux-gnu/12/include:$C_INCLUDE_PATH"
export CPLUS_INCLUDE_PATH="/usr/lib/gcc/x86_64-linux-gnu/12/include:$CPLUS_INCLUDE_PATH"
# 永久生效(写入 shell 配置文件)
echo 'export C_INCLUDE_PATH="/usr/lib/gcc/x86_64-linux-gnu/12/include:$C_INCLUDE_PATH"' >> ~/.bashrc
echo 'export CPLUS_INCLUDE_PATH="/usr/lib/gcc/x86_64-linux-gnu/12/include:$CPLUS_INCLUDE_PATH"' >> ~/.bashrc
source ~/.bashrc
# 查找一下
find /usr -name stddef.h 2>/dev/null
# 重新编译
clang main.c -o main
# fatal error: 'stddef.h' file not found
# cmake 环境可以添加
include_directories(/usr/lib/gcc/x86_64-linux-gnu/12/include)
更多推荐

所有评论(0)