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.
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
É 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:
Instale o pacote ccache:
sudo apt install ccache
Atualize os links simbólicos dos compiladores instalados:
sudo /usr/sbin/update-ccache-symlinks
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
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++
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
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
Vá a um diretório onde queira instalar o SDK do Emscripten. Por exemplo, o diretório home:
cd
Clone o repositório do SDK:
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:
./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) 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.
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
).