Como definir o Clang 3.9 como padrão no Zesty?

3

O Zesty vem com várias versões do Clang. O pacote clang depende de ambos clang-3.9 e clang-4.0 . Parece que o Clang 4 é usado por padrão:

$ clang --version
clang version 4.0.0-1ubuntu1 (tags/RELEASE_400/rc1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

No entanto, eu preciso que o Clang 3.9 seja a versão padrão. Eu não consigo compilar o UnrealEngine por causa disso:

UnrealBuildTool Exception: ERROR: This version of the Unreal Engine can only be
    compiled with clang 3.9, 3.8, 3.7, 3.6 and 3.5. clang 4.0.0 may not build it -
    please use a different version.

Como posso fazer isso?

    
por Nathan Osman 22.04.2017 / 23:43

2 respostas

4

Esta resposta me apontou na direção certa:

sudo update-alternatives --install \
    /usr/bin/clang++ clang++ /usr/lib/llvm-3.9/bin/clang++ 100
sudo update-alternatives --install \
    /usr/bin/clang clang /usr/lib/llvm-3.9/bin/clang 100

Depois de executar esses dois comandos, a compilação pode continuar.

    
por Nathan Osman 23.04.2017 / 00:11
2

Para aproveitar a resposta aceita, se você tiver várias versões do clang, talvez seja de seu interesse tornar clang++ dependente de clang , de modo que tudo que você precisa fazer é atualizar o clang para uma versão diferente e a versão do clang ++ segue o exemplo.

Você pode fazer isso usando a opção --slave de update-alternatives . Então, algo assim:

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.9 100 \
   --slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.9

Você pode fazer isso para outras versões:

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-4.0 100 \
   --slave /usr/bin/clang++ clang++ /usr/bin/clang++-4.0

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 100 \
   --slave /usr/bin/clang++ clang++ /usr/bin/clang++-5.0

Para mudar de versão, basta digitar:

sudo update-alternatives --config clang

Insira uma seleção e os clang e clang++ serão automaticamente alterados para as mesmas versões.

A mesma ideia aplica-se a GCC se também tiver várias versões, pode utilizar este método para configurar gcc e g++ .

Erros:

  

update-alternatives: error: alternativa clang ++ não pode ser escrava de   clang: é uma alternativa mestra

Você pode obter este erro quando tentar executar os comandos acima. Não se preocupe, significa apenas que você já configurou clang++ como alternativa, então você precisará remover essa alternativa antes que o acima funcione. Você pode fazer isso com o comando:

sudo update-alternatives --remove clang++ /usr/bin/clang++-3.9

Faça isso para cada versão do clang ++, depois de removê-los todos, tente novamente.

Fontes:

por smac89 20.10.2017 / 18:15

Tags