Instalacja llvm i clang na Ubuntu

16

Próbuję więc zainstalować Halide na moim Ubuntu 12.04 (64-bitowym). Potrzebuję llvm-3.2 i clang do zainstalowania.

Uruchomienie sudo apt-get install llvm-3.2kończy się informacją, że „pakiet nie został znaleziony”.

Próbuję sudo apt-get install llvmlub sudo apt-get install clanginstaluje wersje 2.9. Google mi w tym pomogło

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

Teraz sudo apt-get install llvm-3.2 clang-3.2działa. Ale kiedy uruchamiam make w folderze Halide, wciąż słyszę brzęk: Nie znaleziono polecenia.

Andriej Iwanow
źródło
2
Zakładam, że „clag: Command not found” powinno brzmieć „clang: Command not found”?
andyg0808
tak, przepraszam za to
Czy używasz Ubuntu z graficznym interfejsem użytkownika, czy tylko z wierszem poleceń?
andyg0808
Czy potrzebujesz także clang 3.2, czy tylko clang 3+?
andyg0808
Pobrałem wersję Desktop. Naprawdę potrzebuję lvvm 3.2, nie ma słowa o wersji clang.

Odpowiedzi:

9

Ok, więc z powodzeniem skompilowałem Halide na Ubuntu 13.04, instalując llvm,clang oraz build-essential. Zgaduję tylko, że Twój problem polega na tym, że LLVM lub kliknięcie z zainstalowanego PPA mogło nie działać całkiem dobrze. Wygląda na to, że rzeczywiście można pobrać LLVM 3.2 z Ubuntu dla 12.04, za pośrednictwem tak zwanego „proponowanego” archiwum. Możesz spróbować wyczyścić LLVM i zainstalować go z „proponowanego”. Wyjaśnię, jak to zrobić poniżej. Ponieważ wspomniałeś, że jesteś nowy w Ubuntu (w oryginalnej wersji pytania), najpierw wyjaśnię, co robi każde użyte polecenie, najlepiej jak potrafię.

Więc sudo apt-get install llvm-3.2próbuje zainstalować pakiet o nazwie llvm-3.2z obecnych składowisk włączona w systemie. W twoim przypadku nie można go znaleźć, więc polecenie nie powiodło się. sudo apt-get install llvmzainstalowałem llvmpakiet, który jest prawdopodobnie pakietem specjalnym, który korzysta z najnowszej wersji LLVM dostępnej w standardowych repozytoriach. W twoim przypadku było to 2,9. Ten sam pomysł dotyczy sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds dodaje do systemu tak zwane osobiste archiwum pakietów lub PPA. Pozwala to uzyskać więcej oprogramowania z innego repozytorium lub źródła oprogramowania. Aby uzyskać więcej informacji, zobacz https://help.launchpad.net/Packaging/PPA . Wreszcie,sudo apt-get updateinformuje Ubuntu, aby uzyskał informacje na temat pakietów dostępnych w aktualnie dostępnych repozytoriach. Możesz spojrzeć na http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html, aby uzyskać więcej informacji na temat zarządzania pakietami w Debianie (z których większość powinna dotyczyć również Ubuntu, ponieważ Ubuntu opiera się na Debianie).

Tak więc kroki, aby usunąć posiadane pakiety i zainstalować dostępne wersje z precyzyjnie zaproponowanych:

  1. Służy sudo apt-get purge llvm-3.2 clang-3.2do całkowitego usunięcia LLVM i brzęknięcia z systemu.
  2. (Opcjonalnie) Użyj, sudo add-apt-repository --remove ppa:kxstudio-team/buildsaby usunąć PPA z systemu.
  3. Postępuj zgodnie z instrukcjami na https://wiki.ubuntu.com/Testing/EnableProposed, aby włączyć Proponowane archiwum (bezpośrednio u góry strony), a także postępuj zgodnie z instrukcjami dla „Selektywnej aktualizacji z -proposed”. Pierwsza część pozwoli na faktyczną wersję Ubuntullvm-3.2 pakietu , a druga powstrzyma system przed próbą uaktualnienia wszystkiego do Proponowanych wersji.
  4. Służy sudo apt-get updatedo pobierania informacji o dostępnych pakietach i wersjach.
  5. Użyj, sudo apt-get install llvm-3.2/precise-proposedaby zainstalować LLVM 3.2, i użyj, sudo apt-get install clang/precise-proposedaby zainstalować Clang 3.0 (myślę, że to jest wersja, którą powinieneś dostać).
  6. Nowy etap: Do sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configaby smakołyk systemu llvm-config-3.2(który jest llvm-config, który przyszedł z llvm-3.2) jako llvm-config. Mówiąc dokładniej, tworzy to symboliczne łącze (lub dowiązanie symboliczne) do llvm-config-3.2 w innym miejscu, w którym Ubuntu będzie szukał programów (więcej informacji: ln , FHS , PATH ). Dlatego po uruchomieniu „llvm-config” Ubuntu znajdzie dowiązanie symboliczne i uruchomi program, na który wskazuje ( llvm-config-3.2).
  7. Sprawdź, czy teraz wszystko się poprawnie kompiluje.

Mam nadzieję, że to działa. Nie testowałem tego, więc używaj na własne ryzyko itp. Jestem jednak pewien, że nie powinno to robić nic strasznego.

EDYCJA: Zauważ, że llvmi llvm-3.2są niezależne. llvmzależy od llvm-2.9( patrz tutaj ), podczas gdy llvm-3.2jest osobny ( patrz zależności tutaj )

Nie jestem też pewien, czy wiesz o uzupełnianiu tabulatorów ; może to być pomocne, jeśli szukasz polecenia, ale nie znasz jego nazwy (na przykład w tym przypadku prawdopodobnie pokazałoby, że llvm-configzostało wywołane llvm-config-3.2).

andyg0808
źródło
Wielkie dzięki! To prawie działało. Jedynym problemem jest to, że zainstalowany llvm-3.2 nie ma llvm-config. Więc kiedy uruchamiam make w Halide, to mówi, że nie ma zainstalowanej lvvm. Uruchomiłem instalację llvm, a teraz llvm-config - wersja mówi 2.9. Jeśli spróbuję zainstalować lvv-3.2, powie mi to, że jest to najnowsza wersja. Wygląda na to, że lvv-3.2 i llvm są całkowicie niezależne.
Zobacz nowy krok w odpowiedzi; prawdopodobnie będziesz musiał odinstalować llvmpakiet ( sudo apt-get purge llvm) zanim to zrobisz, aby upewnić się, że otrzymałeś właściwą wersję. Zawsze możesz sprawdzić, który plik próbujesz uruchomić, używając polecenia which [command]. Na przykład which llvm-configpowinien przeczytać /usr/local/bin/llvm-config. Zobacz en.wikipedia.org/wiki/Which_%28Unix%29 aby uzyskać więcej informacji.
andyg0808
dlaczego llvm-config nie jest połączony z llvm-config-3.2 tak jak w przypadku gcc? czy to świadomy wybór?
Janus Troelsen
@JanusTroelsen Wierzę, że to świadomy wybór. Ponieważ wersja LLVM, która była dostępna z llvmpakietu dla Ubuntu 12.04, była llvm-2.9, llvm-configpolecenie zostało połączone llvm-configz tą samą wersją, tj llvm-config-2.9. W Ubuntu 13.04 i 13.10 llvmpakiet instaluje LLVM 3.2, i spodziewałbym się, że skonfiguruje się llvm-config-3.2jako llvm-config, tak jak w Ubuntu 13.10.
andyg0808,