Como executar

Compilar o GCC a partir do código-fonte

Trilha de C/C++ →

Este guia é para quem quer um GCC mais novo que o do sistema. Para as lições, o GCC do apt basta: veja os guias de C e de C++. O mesmo GCC traz o gcc (C) e o g++ (C++).

Consulte o site oficial do GCC para escolher a versão e a documentação de instalação para os requisitos. O exemplo usa a versão 16.2.0; para outra versão, altere GCC_VERSION.

Preparar (Debian/Ubuntu)

Instale as ferramentas, incluindo um compilador já pronto para construir o novo:

sudo apt install build-essential wget xz-utils

Baixar o código-fonte

GCC_VERSION=16.2.0
mkdir -p "$HOME/gcc-source"
cd "$HOME/gcc-source"
wget --timeout=30 "https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.xz"
tar -xf "gcc-${GCC_VERSION}.tar.xz"
cd "gcc-${GCC_VERSION}"
./contrib/download_prerequisites

Configurar, compilar e instalar

Compile numa pasta separada do código-fonte e instale na sua pasta pessoal, sem sudo. O destino é o --prefix: guarde-o, porque todos os passos seguintes usam o mesmo caminho.

mkdir -p "../build-gcc-${GCC_VERSION}"
cd "../build-gcc-${GCC_VERSION}"
"../gcc-${GCC_VERSION}/configure" \
  --prefix="$HOME/.local/gcc-${GCC_VERSION}" \
  --enable-languages=c,c++ \
  --disable-multilib
make -j"$(nproc)"
make install

--enable-languages=c,c++ habilita C e C++; --disable-multilib evita construir as variantes de 32 bits num Linux de 64 bits. A compilação demora e ocupa vários gigabytes. Se faltar memória, reduza o paralelismo para make -j2.

Usar o novo GCC

Confira pelo caminho completo e, depois, coloque a pasta no início do PATH do terminal atual:

GCC_VERSION=16.2.0
"$HOME/.local/gcc-${GCC_VERSION}/bin/gcc" --version
export PATH="$HOME/.local/gcc-${GCC_VERSION}/bin:$PATH"
hash -r
command -v gcc g++

hash -r limpa os caminhos que o Bash guardou, para ele achar o compilador novo. Para manter nos próximos terminais, adicione ao final de ~/.bashrc a linha abaixo (com a sua versão) e abra um terminal novo:

export PATH="$HOME/.local/gcc-16.2.0/bin:$PATH"

Mantenha o GCC do apt instalado: outros pacotes dependem dele, e o compilado continua usando ferramentas e bibliotecas do sistema.

C++: o programa compila, mas não roda

O g++ novo liga o programa à biblioteca padrão de C++ (libstdc++) dele, mas, ao executar, o Linux carrega a do sistema, que é mais antiga. Com recursos novos, como std::println, aparece:

./main: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.36' not found

Indique a pasta da biblioteca nova ao compilar (-Wl,-rpath grava o caminho no executável):

g++ -std=c++23 main.cpp -o main -Wl,-rpath,"$HOME/.local/gcc-16.2.0/lib64"
./main

Para um teste rápido sem recompilar, use LD_LIBRARY_PATH="$HOME/.local/gcc-16.2.0/lib64" ./main.

O compilador instalado não aparece

  • O PATH precisa apontar para o bin do mesmo --prefix usado no configure. Se você instalou em outro lugar (por exemplo, /usr/local/gcc-16), troque o caminho em todos os comandos acima.
  • Não lembra o prefixo? Na pasta da compilação, rode ./config.status --config.
  • GCC_VERSION vale só no terminal em que foi definida.
  • Se o caminho completo falhar, confira se o make install terminou sem erros, conforme a instalação oficial.