1.1 Linux

As ferramentas e bibliotecas necessárias para o desenvolvimento das atividades da disciplina estão disponíveis nos repositórios de pacotes das principais distribuições Linux.

A seguir veremos como instalar os pacotes na versão para desktop do Ubuntu 22.04 LTS. Há pacotes equivalentes em outras distribuições.

Em um terminal, execute os passos a seguir.

  1. Atualize o sistema:

    sudo apt update && sudo apt upgrade
  2. Instale o pacote build-essential (GCC, GDB, Make, etc):

    sudo apt install build-essential
  3. Instale o CMake e Git:

    sudo apt install cmake git
  4. Instale as bibliotecas GLEW, SDL 2.0 e SDL_image 2.0:

    sudo apt install libglew-dev libsdl2-dev libsdl2-image-dev

Dica

É recomendável instalar também as ferramentas Clang-Tidy e ClangFormat. Elas podem ser utilizadas em linha de comando ou no seu editor de código de preferência para fazer a formatação automática e linting de código C++.

Instale o Clang-Tidy e ClangFormat com o seguinte comando:

sudo apt install clang-tidy clang-format

Outra ferramenta recomendada é o Ccache. Ela serve para acelerar a recompilação das atividades através da manutenção de um cache das compilações anteriores:

  1. Instale o pacote ccache:

    sudo apt install ccache
  2. Atualize os links simbólicos dos compiladores instalados:

    sudo /usr/sbin/update-ccache-symlinks
  3. Execute o comando a seguir para fazer com que o caminho do Ccache seja prefixado ao PATH sempre que um novo terminal for aberto:

    echo 'export PATH="/usr/lib/ccache:$PATH"' >> ~/.bashrc
  4. Reabra o terminal ou execute source ~/.bashrc. Para testar se o Ccache está ativado, execute o comando which g++. A saída deverá incluir o caminho /usr/lib/ccache/, como a seguir:

    /usr/lib/ccache/g++

Verificando o OpenGL

O suporte ao OpenGL vem integrado no kernel do Linux através dos drivers de código aberto da biblioteca Mesa (drivers Intel/AMD/Nouveau).

Para as placas da NVIDIA e AMD há a possibilidade de instalar os drivers proprietários do repositório nonfree (repositório restricted no Ubuntu), ou diretamente dos sites dos fabricantes: AMD ou NVIDIA. Os drivers proprietários, especialmente os da NVIDIA, geralmente têm desempenho superior aos de código aberto.

Para verificar a versão do OpenGL suportada pelos drivers instalados, instale primeiro o pacote mesa-utils:

sudo apt install mesa-utils

Execute o comando:

glxinfo | grep version

O resultado deverá ser parecido com o seguinte:

server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
    Max core profile version: 4.1
    Max compat profile version: 4.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL core profile version string: 4.1 (Core Profile) Mesa 21.0.3
OpenGL core profile shading language version string: 4.10
OpenGL version string: 4.1 (Compatibility Profile) Mesa 21.0.3
OpenGL shading language version string: 4.10
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 21.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
Importante

A versão em OpenGL version string ou OpenGL core profile version string deve ser 3.3 ou superior. Caso não seja, instale os drivers proprietários e certifique-se de que sua placa de vídeo tem os requisitos necessários para o OpenGL 3.3.

Atualizando o GCC

As atividades da disciplina farão uso de um framework de desenvolvimento que exige um compilador com suporte a C++20. Esse requisito é atendido se instalarmos uma versão recente do GCC, como o GCC 11 ou posterior.

A versão padrão do GCC no Ubuntu 22.04 LTS é compatível com C++20. Então, se você seguiu as instruções de instalação até aqui usando o Ubuntu 22.04 ou uma versão mais recente, não é necessário atualizar o GCC.

Caso sua versão do Ubuntu seja mais antiga que a 22.04, verifique no terminal a saída de g++ --version. Por exemplo, no Ubuntu 20.04 o GCC padrão é o 9.3, e a saída será assim:

g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 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.

Neste caso é necessário instalar uma versão mais recente. Para isso, adicione primeiro o PPA ubuntu-toolchain-r/test:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test

Agora podemos instalar o GCC 11:

sudo apt install gcc-11 g++-11

A instalação do GCC 11 não substitui a versão mais antiga já instalada. Entretanto, é necessário criar links simbólicos de gcc e g++ para a versão mais recente. Uma forma simples de fazer isso é através do comando update-alternatives. Primeiro, execute o comando a seguir para definir um valor de prioridade (neste caso, 100) para o GCC 11:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11

Use o comando a seguir para definir um valor de prioridade mais baixo (por exemplo, 90) para a versão anterior do GCC, que neste exemplo é a versão 9:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9

Agora, execute o comando a seguir para escolher qual versão do GCC instalada será utilizada por padrão:

sudo update-alternatives --config gcc

Na lista de versões instaladas, selecione o GCC 11 caso ainda não esteja selecionado. Isso criará os links simbólicos. Para testar se a versão correta do GCC está sendo utilizada, execute g++ --version novamente. A saída deverá ser parecida com a seguinte:

g++ (Ubuntu 11.2.0-1ubuntu1~20.04) 11.2.0
Copyright (C) 2021 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.

Instalando o Emscripten

  1. Vá a um diretório onde queira instalar o SDK do Emscripten. Por exemplo, o diretório home:

    cd
  2. Clone o repositório do SDK:

    git clone https://github.com/emscripten-core/emsdk.git
  3. Entre no diretório recém-criado:

    cd emsdk
  4. Baixe e instale o SDK atualizado (latest):

    ./emsdk install latest
  5. Ative o SDK latest para o usuário atual:

    ./emsdk activate latest
  6. Configure as variáveis de ambiente e PATH do compilador para o terminal atual:

    source ./emsdk_env.sh

Execute o comando emcc --version. A saída deverá ser parecida com a seguinte:

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.45 (ef3e4e3b044de98e1811546e0bc605c65d3412f4)
Copyright (C) 2014 the Emscripten authors (see AUTHORS.txt)
This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Importante

O passo 6 precisa ser refeito sempre que um terminal for aberto. Para automatizar o processo, execute o seguinte comando:

echo 'source "./emsdk/emsdk_env.sh" > /dev/null 2>&1' >> ~/.bashrc

Isso adiciona source "./emsdk/emsdk_env.sh > /dev/null 2>&1" ao final de ~/.bashrc, fazendo com que o script emsdk_env.sh seja executado automaticamente toda vez que um novo terminal for aberto (ajuste o caminho caso o Emscripten não esteja em ~/emsdk).