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)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐