1.1 Linux

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

A seguir veremos como instalar os pacotes no Ubuntu. Entretanto, em outras distribuições há pacotes equivalentes e o procedimento é semelhante.

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
  5. Opcionalmente, instale as ferramentas de linting do GLSL. Essas ferramentas poderão ser utilizadas no Visual Studio Code para fazer a análise estática do código da linguagem de shaders GLSL (OpenGL Shading Language) que será abordada na disciplina:

    sudo apt install glslang-tools

Habilitando o OpenGL

O suporte ao OpenGL já 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 4.1 ou superior. Caso não seja, instale os drivers proprietários e certifique-se de que sua placa de vídeo suporta OpenGL 4.1.

Atualizando o GCC

As atividades farão uso de uma biblioteca de desenvolvimento que exige um compilador com suporte a C++17 e suporte parcial a C++20. Esse requisito é atendido se instalarmos uma versão recente do GCC, como o GCC 10.

Nas últimas versões do Fedora e Manjaro, o GCC instalado por padrão já é a versão 10 ou superior. No Ubuntu, apenas o Ubuntu 20.10 (Groovy Gorilla) em diante vem com GCC 10 ou mais recente. Siga os passos a seguir caso sua distribuição seja de uma versão anterior, ou caso a saída de g++ --version mostre um número de versão menor que 10.

Por exemplo, no Ubuntu 20.04 a saída de g++ --version é:

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.

O padrão no Ubuntu 20.04 é o GCC 9.3. Logo, precisamos instalar uma versão mais recente.

Em um terminal, adicione o PPA ubuntu-toolchain-r/test:

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

Instale o GCC 10:

sudo apt install gcc-10 g++-10

A instalação do GCC 10 não substituirá 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 update-alternatives. Primeiro, execute o comando a seguir para definir um valor de prioridade (neste caso, 100) para o GCC 10:

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

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 --slave /usr/bin/gcov gcov /usr/bin/gcov-9

Agora execute o comando a seguir para escolher qual a versão do GCC instalada no sistema será utilizada:

sudo update-alternatives --config gcc

Na lista de versões instaladas, selecione o GCC 10 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. A saída deverá ser parecida com a seguinte:

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

Opcionalmente, instale o Ccache para acelerar a recompilação das atividades:

  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. Insira a seguinte linha no final do arquivo ~/.bashrc de modo a prefixar o caminho do Ccache no PATH:

    export PATH="/usr/lib/ccache:$PATH"
  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++`.

Instalando o Emscripten

  1. Vá para o seu diretório home:

    cd
  2. Clone o repositório do SDK do Emscripten:

    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. Um arquivo .emscripten será gerado:

    ./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) 2.0.29 (28ca7fb7ce895b21013212e4644a5794a15a76f9)
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

Refaça o passo 6 sempre que abrir um terminal. Como alternativa, insira o comando a seguir na última linha de ~/.bashrc. Isso fará com que o script seja executado automaticamente toda vez que um terminal for aberto:

source ./emsdk/emsdk_env.sh > /dev/null 2>&1

O trecho > /dev/null 2>&1 serve para omitir a saída padrão (stdout) e erro padrão (stderr).