Atualizar para o gcc-4.9 quebrou clang ++

3

Recentemente eu atualizei para o gcc-4.9, mas ele quebrou meu clang ++ e eu não consigo compilar nada. Erro que estou recebendo:

In file included from src/tester.cpp:11:
In file included from /usr/include/boost/progress.hpp:22:
In file included from /usr/include/boost/timer.hpp:20:
In file included from /usr/include/boost/config.hpp:40:
In file included from /usr/include/boost/config/select_stdlib_config.hpp:18:
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/cstddef:51:11: error: no member named 'max_align_t' in the global namespace
  using ::max_align_t;

Saída do clang ++ -v:

Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
Target: x86_64-pc-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.9.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8.2
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.1
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.9.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.2
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9

Eu tentei desinstalar o gcc e o clang e instalá-lo novamente, mas isso não ajudou. Você tem alguma sugestão de como corrigi-lo?

    
por Jendas 13.09.2014 / 19:04

2 respostas

2

$ grep max_align_t /usr/include/c++/* -r
/usr/include/c++/4.9/cstddef: using ::max_align_t; /usr/include/c++/4.9.2/cstddef: using ::max_align_t; /usr/include/c++/v1/cstddef: max_align_t /usr/include/c++/v1/cstddef:typedef long double max_align_t;

/ usr / include / c ++ / v1 / são arquivos da libc ++ - dev então precisamos clangar para usar libc ++

Comutador de compilador simples classifica isso

Então, se você receber este erro, adicione isto à sua linha de comando: -stdlib = libc ++

    
por boris 29.01.2015 / 20:21
0

Houve um bug de incompatibilidade do ABI de longa data entre o clang e o gcc por muitos meses. O problema fez com que o clang não conseguisse se vincular a bibliotecas do sistema existentes.

A boa notícia (a partir de 2016-07-27) é: foi corrigido no Xenial (16.04.1 LTS)

Para os interessados nos detalhes, os erros do upstream são:

por arielf 29.07.2016 / 02:09