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.
Atualize o sistema:
sudo apt update && sudo apt upgrade
Instale o pacote
build-essential
(GCC, GDB, Make, etc):sudo apt install build-essential
Instale o CMake e Git:
sudo apt install cmake git
Instale as bibliotecas GLEW, SDL 2.0 e SDL_image 2.0:
sudo apt install libglew-dev libsdl2-dev libsdl2-image-dev
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
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.
Opcionalmente, instale o Ccache para acelerar a recompilação das atividades:
Instale o pacote ccache:
sudo apt install ccache
Atualize os links simbólicos dos compiladores instalados:
sudo /usr/sbin/update-ccache-symlinks
Insira a seguinte linha no final do arquivo
~/.bashrc
de modo a prefixar o caminho do Ccache noPATH
:export PATH="/usr/lib/ccache:$PATH"
Reabra o terminal ou execute
source ~/.bashrc
. Para testar se o Ccache está ativado, execute o comandowhich g++
. A saída deverá incluir o caminho/usr/lib/ccache/
, como a seguir:/usr/lib/ccache/g++`.
Instalando o Emscripten
Vá para o seu diretório home:
cd
Clone o repositório do SDK do Emscripten:
git clone https://github.com/emscripten-core/emsdk.git
Entre no diretório recém-criado:
cd emsdk
Baixe e instale o SDK atualizado (latest):
./emsdk install latest
Ative o SDK latest para o usuário atual. Um arquivo
.emscripten
será gerado:./emsdk activate latest
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.
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).