ubuntu-22.04 安装 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
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
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
c++ --version
gcc --version
g++ --version
重置所有编译器链接到系统默认
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 编译, 测试
#include
int main()
{
printf("Hello, World!
");
return 0;
}
编译
clang main.c -o main
如果报错:fatal error: ‘stddef.h’ file not found
sudo find / -name "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"
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
include_directories(/usr/lib/gcc/x86_64-linux-gnu/12/include)