Instalação do llvm e clang no ubuntu

16

Então, eu estou tentando instalar o Halide no meu Ubuntu 12.04 (64bit). Eu preciso do llvm-3.2 e clang para ser instalado.

A execução sudo apt-get install llvm-3.2termina com 'pacote não encontrado'.

Tentando sudo apt-get install llvmou sudo apt-get install clanginstala 2.9 versões. O Google me ajudou com isso

sudo add-apt-repository ppa:kxstudio-team/builds
sudo apt-get update

Agora sudo apt-get install llvm-3.2 clang-3.2funciona. Mas, quando executo o make na pasta Halide, ainda recebo clang: Comando não encontrado.

Andrei Ivanov
fonte
2
Presumo que "clag: comando não encontrado" deve ler "clang: comando não encontrado"?
andyg0808
sim, desculpe por isso #
Você está usando um Ubuntu com uma GUI ou com apenas uma linha de comando?
andyg0808
Além disso, você precisa do clang 3.2 ou apenas do 3+?
andyg0808
Eu baixei a versão para desktop. Na verdade, eu preciso do llvm 3.2, não há nenhuma palavra sobre a versão do clang.

Respostas:

9

Ok, então eu compilado com sucesso Halide no Ubuntu 13.04, instalando llvm, clange build-essential. Meu único palpite quanto ao seu problema é que o LLVM ou o clang do PPA que você instalou pode não ter funcionado corretamente. Parece que é realmente possível obter o LLVM 3.2 do Ubuntu para 12.04, através do que é conhecido como arquivo "proposto". Você pode tentar limpar o LLVM que você possui e instalá-lo de "proposto". Vou explicar como fazer isso abaixo. Como você mencionou que é novo no Ubuntu (na versão original da pergunta), primeiro explicarei o que cada comando que você já usou faz, da melhor maneira possível.

Portanto, sudo apt-get install llvm-3.2tenta instalar o pacote nomeado a llvm-3.2partir dos repositórios atuais ativados no seu sistema. No seu caso, não foi possível encontrar, portanto, o comando falhou. sudo apt-get install llvminstalou o llvmpacote, que provavelmente é um pacote especial que apenas usa o LLVM mais atualizado disponível em seus repositórios padrão. No seu caso, isso foi 2,9. A mesma idéia se aplica a sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds adiciona o que é chamado de arquivo de pacote pessoal ou PPA ao seu sistema. Isso permite que você obtenha mais software de outro repositório ou fonte de software. Consulte https://help.launchpad.net/Packaging/PPA para obter mais informações. Finalmente,sudo apt-get updatediz ao Ubuntu para obter informações sobre quais pacotes estão disponíveis nos repositórios atualmente disponíveis. Você pode dar uma olhada em http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html para obter mais informações sobre gerenciamento de pacotes no Debian (a maioria também deve se aplicar ao Ubuntu, já que o Ubuntu é baseado no Debian).

Portanto, as etapas para remover os pacotes que você possui e instalar as versões disponíveis da proposta precisa:

  1. Use sudo apt-get purge llvm-3.2 clang-3.2para remover completamente o LLVM e clang do seu sistema.
  2. (Opcional) Use sudo add-apt-repository --remove ppa:kxstudio-team/buildspara remover o PPA do seu sistema.
  3. Siga as instruções em https://wiki.ubuntu.com/Testing/EnableProposed para ativar o arquivo proposto (diretamente na parte superior da página) e siga as instruções para "Atualização seletiva da proposta". A primeira parte habilitará a versão real do llvm-3.2pacote do Ubuntu e a segunda impedirá que o sistema tente atualizar tudo para as versões propostas.
  4. Use sudo apt-get updatepara obter informações sobre quais pacotes e versões estão disponíveis agora.
  5. Use sudo apt-get install llvm-3.2/precise-proposedpara instalar o LLVM 3.2 e use sudo apt-get install clang/precise-proposedpara instalar o Clang 3.0 (acho que essa é a versão que você deve obter).
  6. NOVA ETAPA: Faça sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configpara tratar o sistema llvm-config-3.2(que é o llvm-configque veio com llvm-3.2) como llvm-config. Mais completamente, isso cria um link simbólico (ou link simbólico) para o llvm-config-3.2 em outro local onde o Ubuntu procurará programas (mais informações: ln , FHS , PATH ). Assim, quando você executa "llvm-config", o Ubuntu encontra o link simbólico e executa o programa para o qual aponta ( llvm-config-3.2).
  7. Veja se tudo está compilado corretamente agora.

Espero que funcione. Eu não testei nada disso, então use por seu próprio risco, etc. Tenho certeza, no entanto, de que não deve fazer nada de terrível.

EDIT: Observe que llvme llvm-3.2são independentes. llvmdepende llvm-2.9( veja aqui ), enquanto llvm-3.2está separado ( veja dependências aqui )

Além disso, não tenho certeza se você sabe sobre o preenchimento de guias ; pode ser útil se você estiver procurando por um comando, mas não souber o nome (por exemplo, nesse caso, provavelmente teria mostrado que llvm-configfoi chamado llvm-config-3.2).

andyg0808
fonte
Muito obrigado! Quase funcionou. O único problema é que o llvm-3.2 instalado não possui o llvm-config. Então, quando executo o make no Halide, ele diz que o llvm não está instalado. Corri o install llvm e agora o llvm-config --version diz 2.9. Se eu tentar instalar o llvm-3.2, ele me diz que é a versão mais recente. Parece que llvm-3.2 e llvm são completamente independentes.
Veja o novo passo na resposta; você provavelmente desejará desinstalar o llvmpacote ( sudo apt-get purge llvm) antes de fazer isso para garantir a versão correta. Você sempre pode verificar o arquivo que você está tentando executar usando o comando which [command]. Por exemplo, which llvm-configdeve ler /usr/local/bin/llvm-config. Veja en.wikipedia.org/wiki/Which_%28Unix%29 para mais informações.
andyg0808
por que o llvm-config não está vinculado ao llvm-config-3.2, exatamente como no gcc? esta é uma escolha consciente?
Janus Troelsen
@JanusTroelsen Eu acredito que é uma escolha consciente. Como a versão do LLVM disponível no llvmpacote para Ubuntu 12.04 era llvm-2.9, o llvm-configcomando estava vinculado ao llvm-configda mesma versão, ou seja llvm-config-2.9,. No Ubuntu 13.04 e 13.10, o llvmpacote instala o LLVM 3.2, e eu esperaria que ele fosse configurado llvm-config-3.2como o llvm-configque faz no Ubuntu 13.10.
precisa saber é o seguinte