C++ Instalar no Linux

As caixas Experimente do guia compilam C++ no navegador, mas, para escrever programas de verdade, guardados no seu computador, você precisa de um compilador instalado. No Linux isso é fácil: o compilador g++ está no gerenciador de pacotes de todas as distribuições, e um comando basta. Nesta aula você vai conferir se ele já existe, instalá-lo no Ubuntu, no Debian, no Fedora e no Arch, conhecer o clang++ como alternativa e compilar o seu primeiro programa no terminal.

Você vai aprender
  • Como saber se o g++ já está instalado.
  • O que é o pacote build-essential e como instalá-lo no Ubuntu e no Debian.
  • Como ler a saída do apt e descobrir qual versão você vai receber (apt-cache policy).
  • Os comandos do Fedora (dnf), do Arch (pacman) e do openSUSE (zypper).
  • Como instalar e usar o clang++, o outro grande compilador.
  • Como conferir a instalação e compilar o primeiro programa, inclusive um teste do C++23.

Se você usa Windows ou macOS, vá para Instalar no Windows e macOS. Se ainda não quer instalar nada, tudo bem: quase todo o Nível 1 funciona nas caixas Experimente.


A ideia: a loja de aplicativos do Linux

No celular, você não procura aplicativos em sites aleatórios: abre a loja, procura pelo nome e toca em "Instalar". O Linux tem isso desde muito antes dos celulares: o gerenciador de pacotes. Cada programa vem num pacote, que o gerenciador baixa dos servidores da sua distribuição, confere e instala, junto com tudo de que ele depende. Para atualizar, o mesmo gerenciador cuida de tudo.

DistribuiçãoGerenciador de pacotesComando
Ubuntu, Debian, Linux Mint, Pop!_OSAPTapt
Fedora, Red Hat, Rocky, AlmaLinuxDNFdnf
Arch, Manjaro, EndeavourOSpacmanpacman
openSUSEzypperzypper

Instalar programas mexe no sistema inteiro, então os gerenciadores pedem permissão de administrador: por isso os comandos começam com sudo ("faça como superusuário"), e o terminal pede a sua senha. Ao digitar a senha, nada aparece na tela, nem asteriscos: é normal, digite e tecle Enter.


1. O g++ já está instalado?

Em muitas distribuições, o compilador já vem instalado ou entra junto com outros programas. Antes de instalar, pergunte. Abra o terminal (no Ubuntu: Ctrl+Alt+T) e digite:

$ g++ --version
g++ (Ubuntu 15.2.0-16ubuntu1) 15.2.0              « está instalado: versão 15.2
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Se apareceu uma versão, o g++ já está aí. Se a versão for 14 ou mais nova, você tem tudo de que o guia precisa; pule para a seção 5. Se ele não estiver instalado, a resposta é esta:

$ g++ --version
bash: g++: comando não encontrado                « o terminal não achou nenhum programa chamado g++

(No Ubuntu, logo abaixo pode aparecer uma sugestão do pacote que tem o comando.) Nesse caso, siga a seção da sua distribuição.


2. Ubuntu e Debian: build-essential

No Ubuntu, no Debian e nos derivados (Linux Mint, Pop!_OS, elementary), instale o pacote build-essential. Ele é um "pacote-kit": não tem programa nenhum dentro, só uma lista do que é essencial para construir (build) programas. O comando apt-cache depends mostra essa lista:

$ apt-cache depends build-essential
build-essential
 |Depende: libc6-dev                              « os arquivos da biblioteca do C para compilar
  Depende: <libc-dev>
    libc6-dev
  Depende: gcc                                     « o compilador de C
  Depende: g++                                     « o compilador de C++: o que você quer
  Depende: make                                    « o make, que automatiza compilações
    make-guile
  Depende: dpkg-dev
  Depende: libcrypt-dev
  Depende: coreutils-from-uutils

Daria para instalar só o g++, mas o build-essential já traz o make (aula Make) e as peças que outras ferramentas esperam encontrar. É a recomendação oficial do Ubuntu e do Debian.

Instalando

São dois comandos. O primeiro atualiza a lista de pacotes (o "catálogo da loja"); o segundo instala:

sudo apt update
sudo apt install build-essential
sudo
"Faça como administrador". Pede a sua senha (que não aparece enquanto você digita).
apt
O gerenciador de pacotes do Ubuntu e do Debian.
install
A ação: instalar.
build-essential
O nome do pacote. Você pode pôr vários, separados por espaço: sudo apt install build-essential clang.

O apt mostra a lista do que vai instalar, quanto vai baixar e pergunta Deseja continuar? [S/n]. Tecle Enter (o S maiúsculo é a resposta padrão) e espere. Em uma conexão comum, leva um ou dois minutos.

Dá para ver o que aconteceria, sem instalar nada, com a opção -s (simulate, "simular") do apt-get, o "irmão mais velho" do apt. A simulação nem precisa de sudo. No computador da Ana, que já tem o g++, a resposta foi esta:

$ apt-get -s install build-essential g++
NOTA: Esta é apenas uma simulação!
      apt-get precisa de privilégios de root para execução real.
      Lembre-se também de que a trava está desativada e,
      portanto, não dependa da relevância para a situação real atual!
Lendo listas de pacotes...
Construindo árvore de dependências...
Lendo informação de estado...
build-essential já é a versão mais nova (12.12ubuntu2.26.04.2).   « já instalado
g++ já é a versão mais nova (4:15.2.0-5ubuntu1).                 « já instalado
Resolvendo dependências...
0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 12 não atualizados.

Pedir para instalar algo que já está instalado não faz mal nenhum: o apt só diz "já é a versão mais nova" e não muda nada. Para ver como fica uma instalação de verdade, a Ana simulou a instalação de um compilador que ela não tem, o g++-16 (uma versão extra, mais nova, que o Ubuntu 26.04 oferece ao lado do g++ 15). As linhas técnicas do fim (Inst e Conf, uma por pacote) foram filtradas com o grep -v:

$ apt-get -s install g++-16 | grep -v "^Conf\|^Inst"
NOTA: Esta é apenas uma simulação!
      apt-get precisa de privilégios de root para execução real.
      Lembre-se também de que a trava está desativada e,
      portanto, não dependa da relevância para a situação real atual!
Lendo listas de pacotes...
Construindo árvore de dependências...
Lendo informação de estado...
Resolvendo dependências...
Os pacotes adicionais a seguir serão instalados:              « dependências: vêm junto, automaticamente
  cpp-16 cpp-16-x86-64-linux-gnu g++-16-x86-64-linux-gnu gcc-16
  gcc-16-x86-64-linux-gnu libgcc-16-dev libstdc++-16-dev
Pacotes sugeridos:                                           « opcionais: NÃO serão instalados
  gcc-16-locales cpp-16-doc g++-16-multilib gcc-16-doc gcc-16-multilib
  libstdc++-16-doc
Os NOVOS pacotes a seguir serão instalados:                  « o total: o que você pediu + dependências
  cpp-16 cpp-16-x86-64-linux-gnu g++-16 g++-16-x86-64-linux-gnu gcc-16
  gcc-16-x86-64-linux-gnu libgcc-16-dev libstdc++-16-dev
0 pacotes atualizados, 8 pacotes novos instalados, 0 a serem removidos e 12 não atualizados.

Você pediu um pacote, e o apt trouxe oito: o cpp-16 é o pré-processador, o gcc-16 é a base da família GCC, e o libstdc++-16-dev são os arquivos da biblioteca padrão do C++ (o iostream que o pré-processador cola, lembra da aula Como o C++ Vira Programa?). Esse é o trabalho do gerenciador: resolver as dependências por você. (Curiosidade: no Ubuntu 26.04, esse g++-16 é uma versão de pré-lançamento, de março de 2026, anterior ao GCC 16.1 oficial; o apt-cache policy g++-16 mostra 16-20260322. Para o guia, o g++ 15 padrão é o recomendado.) Na instalação real, depois dessa lista vêm a pergunta Deseja continuar? [S/n], o download e a configuração.

Qual versão vou receber?

Cada versão de distribuição "congela" uma versão do compilador. O comando apt-cache policy mostra a versão instalada e a que está disponível:

$ apt-cache policy g++
g++:
  Instalado: 4:15.2.0-5ubuntu1                    « a instalada
  Candidato: 4:15.2.0-5ubuntu1                    « a que o apt instalaria (a mesma: está em dia)
  Tabela de versão:
 *** 4:15.2.0-5ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu resolute/main amd64 Packages   « vem do repositório principal do Ubuntu 26.04
        100 /var/lib/dpkg/status

Como ler 4:15.2.0-5ubuntu1: o 4: é um número interno do empacotamento (pode ignorar), 15.2.0 é a versão do GCC, e -5ubuntu1 é a revisão do pacote feita pelo Ubuntu. Se o g++ não estiver instalado, a linha Instalado diz (nenhum). O resolute é o apelido do Ubuntu 26.04.

Versões que as distribuições mais usadas trazem (conferido nos repositórios oficiais em outubro de 2026):

Distribuiçãog++ padrãoServe para o guia?
Ubuntu 26.04 LTS15Sim, é a do guia
Ubuntu 24.04 LTS, Linux Mint 2213Quase tudo. Falta o std::print/std::println (chegou no g++ 14): instale também o g++-14 (veja abaixo)
Debian 13 (trixie)14Sim
Debian 12 (bookworm)12Só o Nível 1 básico: faltam std::format e std::print

Se a sua distribuição traz um g++ mais velho, procure uma versão extra com número no nome, como a Ana fez com o g++-16. No Ubuntu 24.04, por exemplo:

sudo apt install g++-14
g++-14 --version

As duas versões convivem: g++ continua sendo o 13, e g++-14 é o novo. Nesse caso, nos comandos do guia, digite g++-14 no lugar de g++.


3. Fedora, Arch e openSUSE

Nas outras famílias de distribuição, o pacote do compilador C++ tem outro nome. Os comandos abaixo seguem a documentação oficial de cada uma. Eles não foram executados na máquina da Ana (que é Ubuntu), por isso a tabela é ilustrativa:

DistribuiçãoComandoObservação
Fedora (e Red Hat, Rocky, AlmaLinux)sudo dnf install gcc-c++No Fedora, o pacote gcc é só o compilador de C; o de C++ é o gcc-c++. O make vem com sudo dnf install make.
Arch (e Manjaro, EndeavourOS)sudo pacman -S gccNo Arch, o pacote gcc já inclui o g++. Para o kit completo (com make), use sudo pacman -S base-devel.
openSUSEsudo zypper install gcc-c++Mesmo nome do Fedora.

O Fedora e o Arch costumam trazer versões mais novas do GCC que o Ubuntu e o Debian (o GCC 16 saiu em abril de 2026), o que é ótimo para o guia. Só lembre: o GCC 16 usa o C++20 quando você não passa -std, enquanto o g++ 15 usa o C++17. Com o -std=c++23 do comando padrão das aulas, isso não faz diferença (aula Versões do C++).


4. O clang++, a alternativa

O Clang é o outro grande compilador de C++ livre, do projeto LLVM. Ele entende o mesmo C++ que o g++, gera programas tão rápidos quanto, e é conhecido pelas mensagens de erro claras. O editor do guia usa o Clang, então tê-lo no computador ajuda a ver exatamente as mesmas mensagens das caixas Experimente. No Ubuntu e no Debian:

sudo apt install clang

(No Fedora, sudo dnf install clang; no Arch, sudo pacman -S clang.) O comando se chama clang++ e aceita as mesmas opções principais do g++:

$ clang++ --version
Ubuntu clang version 21.1.8 (6ubuntu1)            « Clang 21.1.8
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-21/bin
$ apt-cache policy clang
clang:
  Instalado: 1:21.1.6-71                         « o pacote "clang" é um atalho para o clang-21
  Candidato: 1:21.1.6-71
  Tabela de versão:
 *** 1:21.1.6-71 500
        500 http://archive.ubuntu.com/ubuntu resolute/universe amd64 Packages
        100 /var/lib/dpkg/status

Os números diferentes (21.1.6 no pacote clang, 21.1.8 no programa) não são erro: o pacote clang é só um "atalho" que aponta para o pacote clang-21, que tem o compilador de verdade e foi atualizado separadamente. E o universe indica que o Clang vem da parte do Ubuntu mantida pela comunidade.

g++ (GCC)clang++ (LLVM)
Instalar no Ubuntu/Debiansudo apt install build-essentialsudo apt install clang
Compilarg++ -std=c++23 -Wall -Wextra ola.cpp -o olaclang++ -std=c++23 -Wall -Wextra ola.cpp -o ola
Biblioteca padrão no Linuxlibstdc++ (do GCC)a mesma libstdc++, por padrão
Usadonas saídas de terminal do guiano editor do guia; padrão no macOS
Qual usar?Os dois. O guia usa o g++ nos exemplos de terminal porque é o padrão do Linux. Quando uma mensagem de erro não fizer sentido num, compile no outro: às vezes a explicação do outro é mais clara.

Repare que o Clang no Linux usa a mesma biblioteca padrão do g++ (a libstdc++). Por isso o build-essential é útil mesmo para quem prefere o Clang.


5. Conferindo a instalação

Depois de instalar, confira três coisas: a versão, onde o programa está e se ele aceita o C++23.

$ g++ --version
g++ (Ubuntu 15.2.0-16ubuntu1) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ which g++                                       « onde está o programa
/usr/bin/g++
$ readlink /usr/bin/g++                           « para onde aponta o atalho
g++-15

O which mostra a pasta do programa, e o readlink revela que /usr/bin/g++ é um atalho (um link simbólico) para o g++-15. É assim que várias versões convivem: o atalho g++ aponta para a versão padrão, e as outras são chamadas pelo nome com número (g++-16).


6. O teste final: o primeiro programa

Agora o teste de verdade: escrever, compilar e rodar. Crie uma pasta para os seus programas e entre nela:

$ mkdir cpp                                       « cria a pasta cpp na sua pasta pessoal
$ cd cpp                                          « entra nela

Abra um editor de texto e crie o arquivo ola.cpp dentro dessa pasta. Pode ser o editor de textos do seu sistema, o nano no terminal (nano ola.cpp; para salvar, Ctrl+O e Enter; para sair, Ctrl+X) ou um editor de programação (aula Editores e IDEs). Digite:

#include <iostream>

int main() {
    std::cout << "Olá, mundo!\n";
}

Salve, volte ao terminal, compile com o comando padrão do guia e rode:

$ g++ -std=c++23 -Wall -Wextra ola.cpp -o ola
$ ./ola
Olá, mundo!

Se apareceu Olá, mundo!, o compilador está funcionando. Falta conferir o C++23: este programa usa o std::println, que só existe no g++ 14 ou mais novo, com -std=c++23:

#include <print>

int main() {
    std::println("C++23 funcionando: {}", __cplusplus);
}
$ g++ -std=c++23 -Wall -Wextra teste23.cpp -o teste23
$ ./teste23
C++23 funcionando: 202302                          « 202302 = C++23 (aula Versões do C++)

Se os dois rodaram, a sua instalação está pronta para o guia inteiro. Faça o mesmo teste aqui no editor do guia, que usa outro compilador (o Clang) e deve dar o mesmo resultado:

Missão: rode e confira o 202302. Depois acrescente uma segunda linha com std::println("Instalação da Ana: OK"); logo abaixo da primeira (o {} só é preciso quando há um valor para encaixar).

#include <print>

int main() {
    std::println("C++23 funcionando: {}", __cplusplus);
}
#include <print>

int main() {
    std::println("C++23 funcionando: {}", __cplusplus);
    std::println("Instalação da Ana: OK");
}

Para comparar, compile o ola.cpp também com o Clang, se você o instalou. O resultado é o mesmo programa:

$ clang++ -std=c++23 -Wall -Wextra ola.cpp -o ola
$ ./ola
Olá, mundo!

Atualizando

O compilador é atualizado junto com o resto do sistema: sudo apt update seguido de sudo apt upgrade (no Fedora, sudo dnf upgrade; no Arch, sudo pacman -Syu). Versões principais novas (do 15 para o 16) chegam quando você atualiza a distribuição inteira, ou instalando a versão extra com número no nome.


Quando dá errado

bash: g++: comando não encontrado
$ g++ --version
bash: g++: comando não encontrado

O que significa: o terminal procurou um programa chamado g++ nas pastas do sistema e não achou. Ou ele não está instalado, ou você instalou só o gcc (o compilador de C), que em algumas distribuições vem sem o g++.

Como consertar: instale o build-essential (Ubuntu/Debian), o gcc-c++ (Fedora/openSUSE) ou o gcc (Arch), e rode g++ --version de novo.

E: Não foi possível abrir arquivo de trava … (13: Permissão negada)
$ apt-get install g++-14
E: Não foi possível abrir arquivo de trava /var/lib/dpkg/lock-frontend - open (13: Permissão negada)
E: Não é possível adquirir a trava da interface do dpkg (/var/lib/dpkg/lock-frontend), você é root?

O que significa: faltou o sudo. Instalar programas exige permissão de administrador (root), e o apt pergunta, no fim: "você é root?". A "trava" (lock) é um arquivo que impede dois programas de instalarem coisas ao mesmo tempo, e só o administrador pode mexer nela.

Como consertar: repita com sudo na frente: sudo apt install g++-14. Se a mensagem disser que a trava está "em uso por outro processo", é porque outra instalação (por exemplo, a atualização automática do sistema) está rodando: espere alguns minutos e tente de novo.

E: Não é possível encontrar o pacote …
$ apt-get -s install buil-essential
NOTA: Esta é apenas uma simulação!
      apt-get precisa de privilégios de root para execução real.
      Lembre-se também de que a trava está desativada e,
      portanto, não dependa da relevância para a situação real atual!
Lendo listas de pacotes...
Construindo árvore de dependências...
Lendo informação de estado...
E: Não é possível encontrar o pacote buil-essential   « faltou o d de build

O que significa: nenhum pacote com esse nome existe no catálogo. Quase sempre é um erro de digitação, um nome de outra distribuição (gcc-c++ é do Fedora, não existe no Ubuntu) ou um catálogo desatualizado.

Como consertar: confira o nome; rode sudo apt update para atualizar o catálogo; para procurar, use apt search g++.

cc1plus: fatal error: ola.cpp: Arquivo ou diretório inexistente
$ g++ ola.cpp -o ola
cc1plus: fatal error: ola.cpp: Arquivo ou diretório inexistente
compilation terminated.

O que significa: o compilador está instalado e funcionando, mas não achou o arquivo ola.cpp na pasta onde você está. Repare no prompt: a Ana estava em /tmp, e o arquivo está em ~/cpp. O cc1plus é o compilador interno que o g++ chama (aula Como o C++ Vira Programa).

Como consertar: entre na pasta do arquivo (cd ~/cpp) ou confira o nome com ls. Cuidado com editores que salvam como ola.cpp.txt: o ls mostra o nome verdadeiro.

O std::println não funciona, mesmo com -std=c++23

O que significa: o seu g++ é anterior ao 14 (por exemplo, o g++ 13 do Ubuntu 24.04), e a biblioteca padrão dele ainda não tem o arquivo <print>. O erro tem o mesmo formato do #include errado que você viu na aula Como o C++ Vira Programa: fatal error: print: Arquivo ou diretório inexistente (ilustrativo: a máquina do guia tem o g++ 15, onde o <print> existe).

Como consertar: instale uma versão mais nova ao lado (sudo apt install g++-14) e compile com g++-14; ou use o std::cout, que funciona em qualquer versão.


Referência

TarefaUbuntu / DebianFedoraArch
Instalar o g++sudo apt install build-essentialsudo dnf install gcc-c++sudo pacman -S gcc (ou base-devel)
Instalar o Clangsudo apt install clangsudo dnf install clangsudo pacman -S clang
Ver a versão disponívelapt-cache policy g++dnf info gcc-c++pacman -Si gcc
Atualizarsudo apt update && sudo apt upgradesudo dnf upgradesudo pacman -Syu
Simular (sem instalar)apt-get -s install …dnf install --assumeno …(não tem)
Para conferirComando
a versão do g++g++ --version
a versão do Clangclang++ --version
onde está o programawhich g++
se o C++23 funcionacompilar o teste23.cpp com -std=c++23

Exercícios

1. Instalar no Ubuntu

Complete o comando que instala o kit de compilação no Ubuntu:

sudo apt install

2. Instalar no Fedora

No Fedora, qual é o nome do pacote do compilador C++?

sudo dnf install

3. O apt respondeu E: Não é possível adquirir a trava … você é root?. O que faltou?

4. A Ana tem o Ubuntu 24.04, com g++ 13. O que acontece com o std::println?

5. Para que serve o apt-get -s install?

Missão final: o cartão de boas-vindas

Missão: escreva um programa que mostre as duas linhas abaixo, cada uma com um std::println. Lembre: o texto vai entre aspas, e cada linha termina com ;.

Compilador instalado!
Pasta de trabalho: ~/cpp
#include <print>

int main() {
    // escreva aqui as duas linhas com std::println
}
#include <print>

int main() {
    std::println("Compilador instalado!");
    std::println("Pasta de trabalho: ~/cpp");
}

A linha que começa com // é um comentário: o compilador a ignora, ela serve só para pessoas lerem (aula Comentários). Pode apagá-la ou deixá-la.


Resumo

  • Confira primeiro: g++ --version. comando não encontrado = não está instalado.
  • Ubuntu/Debian: sudo apt update e sudo apt install build-essential (traz g++, gcc e make).
  • Fedora: sudo dnf install gcc-c++; Arch: sudo pacman -S gcc; openSUSE: sudo zypper install gcc-c++.
  • apt-cache policy g++ mostra a versão; para o guia, o ideal é g++ 14 ou mais novo (o std::println chegou no 14). Versões extras: g++-14, g++-16.
  • O clang++ (sudo apt install clang) é a alternativa, e é o compilador do editor do guia.
  • Teste final: g++ -std=c++23 -Wall -Wextra ola.cpp -o ola e ./ola; depois o teste23.cpp com std::println.
  • Próximo passo: escolher um editor de código, em Editores e IDEs (ou, no Windows e no macOS, Instalar no Windows e macOS).