llvm dan dentang instalasi di ubuntu

16

Jadi saya mencoba menginstal Halide di Ubuntu 12.04 (64bit) saya. Saya perlu llvm-3.2 dan dentang untuk diinstal.

Menjalankan sudo apt-get install llvm-3.2berakhir dengan 'paket tidak ditemukan'.

Mencoba sudo apt-get install llvmatau sudo apt-get install clangmenginstal versi 2.9. Google membantu saya dengan ini

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

Sekarang sudo apt-get install llvm-3.2 clang-3.2bekerja. Tetapi ketika saya menjalankan make di folder Halide saya masih mendapatkan dentang: Perintah tidak ditemukan.

Andrei Ivanov
sumber
2
Saya berasumsi bahwa "clag: Command not found" harus membaca "clang: Command not found"?
andyg0808
ya, maaf soal itu
Apakah Anda menggunakan Ubuntu dengan GUI atau yang hanya dengan baris perintah?
andyg0808
Juga, apakah Anda perlu clang 3.2 atau hanya clang 3+?
andyg0808
Saya mengunduh versi Desktop. Saya sebenarnya membutuhkan llvm 3.2, tidak ada kabar tentang versi dentang.

Jawaban:

9

Ok, jadi saya berhasil dikompilasi Halide pada Ubuntu 13.04 dengan menginstal llvm, clangdan build-essential. Satu-satunya dugaan saya tentang masalah Anda adalah bahwa LLVM atau dentang dari PPA yang Anda instal mungkin tidak berfungsi dengan benar. Tampaknya sebenarnya mungkin untuk mendapatkan LLVM 3.2 dari Ubuntu untuk 12.04, melalui apa yang dikenal sebagai arsip "yang diusulkan". Anda dapat mencoba membersihkan LLVM yang Anda miliki dan menginstalnya dari "yang diusulkan". Saya akan menjelaskan cara melakukannya di bawah. Karena Anda menyebutkan bahwa Anda baru di Ubuntu (dalam versi pertanyaan awal), saya pertama-tama akan menjelaskan apa yang setiap perintah Anda telah gunakan, sebaik yang saya bisa.

Jadi, sudo apt-get install llvm-3.2cobalah untuk menginstal paket bernama llvm-3.2dari repositori saat ini yang diaktifkan pada sistem Anda. Dalam kasus Anda, itu tidak dapat ditemukan, jadi perintahnya gagal. sudo apt-get install llvmmenginstal llvmpaket, yang mungkin merupakan paket khusus yang hanya menggunakan LLVM terbaru yang tersedia di repositori standar Anda. Dalam kasus Anda, itu 2.9. Gagasan yang sama berlaku untuk sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds menambahkan apa yang disebut arsip paket pribadi atau PPA ke sistem Anda. Ini memungkinkan Anda mendapatkan lebih banyak perangkat lunak dari repositori lain , atau sumber perangkat lunak. Lihat https://help.launchpad.net/Packaging/PPA untuk info lebih lanjut. Akhirnya,sudo apt-get updatememberitahu Ubuntu untuk mendapatkan informasi tentang paket apa yang tersedia dari repositori yang saat ini tersedia. Anda dapat melihat di http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html untuk info lebih lanjut tentang manajemen paket di Debian (sebagian besar juga berlaku untuk Ubuntu, karena Ubuntu didasarkan pada Debian).

Jadi, langkah-langkah untuk menghapus paket yang Anda dapatkan dan menginstal versi yang tersedia dari yang diusulkan:

  1. Gunakan sudo apt-get purge llvm-3.2 clang-3.2untuk menghapus LLVM sepenuhnya dan mendentang dari sistem Anda.
  2. (Opsional) Gunakan sudo add-apt-repository --remove ppa:kxstudio-team/buildsuntuk menghapus PPA dari sistem Anda.
  3. Ikuti instruksi di https://wiki.ubuntu.com/Testing/EnableProposed untuk mengaktifkan arsip yang Diajukan (tepat di bagian atas halaman), dan juga ikuti instruksi untuk "Pembaruan selektif dari -proposed". Bagian pertama akan mengaktifkan versi llvm-3.2paket Ubuntu yang sebenarnya , dan yang kedua akan menjaga sistem dari mencoba untuk memutakhirkan semuanya ke versi yang Diajukan.
  4. Gunakan sudo apt-get updateuntuk menarik informasi tentang paket dan versi apa yang sekarang tersedia.
  5. Gunakan sudo apt-get install llvm-3.2/precise-proposeduntuk menginstal LLVM 3.2, dan gunakan sudo apt-get install clang/precise-proposeduntuk menginstal Clang 3.0 (saya pikir itu versi yang harus Anda dapatkan).
  6. LANGKAH BARU: Lakukan sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configuntuk membuat sistem memperlakukan llvm-config-3.2(yang llvm-configdatang dengan llvm-3.2) sebagai llvm-config. Lebih lengkapnya, ini menciptakan tautan simbolik (atau symlink) ke llvm-config-3.2 di tempat lain di mana Ubuntu akan mencari program (info lebih lanjut: ln , FHS , PATH ). Jadi, ketika Anda menjalankan "llvm-config", Ubuntu akan menemukan symlink dan menjalankan program yang ditunjuknya ( llvm-config-3.2).
  7. Lihat apakah semuanya mengkompilasi dengan benar sekarang.

Semoga itu berhasil. Saya belum menguji semua ini, jadi gunakan dengan risiko Anda sendiri, dll. Saya cukup yakin, bagaimanapun, itu seharusnya tidak melakukan sesuatu yang mengerikan.

EDIT: Catat itu llvmdan llvm-3.2independen. llvmtergantung pada llvm-2.9( lihat di sini ), sementara llvm-3.2terpisah ( lihat dependensi di sini )

Juga, saya tidak yakin apakah Anda tahu tentang penyelesaian tab ; akan sangat membantu jika Anda mencari perintah tetapi tidak cukup tahu nama (misalnya, dalam hal ini, mungkin akan ditampilkan yang llvm-configdipanggil llvm-config-3.2).

andyg0808
sumber
Terima kasih banyak! Hampir berhasil. Satu-satunya masalah adalah bahwa llvm-3.2 yang diinstal tidak memiliki llvm-config. Jadi ketika saya menjalankan make di Halide ia memberitahu tidak ada llvm yang diinstal. Saya menjalankan install llvm dan sekarang llvm-config --version mengatakan 2.9. Jika saya mencoba menginstal llvm-3.2 itu memberitahu saya itu versi terbaru. Tampaknya llvm-3.2 dan llvm sepenuhnya independen.
Lihat langkah baru dalam jawabannya; Anda mungkin ingin menghapus instalasi llvmpaket ( sudo apt-get purge llvm) sebelum melakukannya untuk memastikan Anda mendapatkan versi yang benar. Anda selalu dapat memeriksa file apa yang Anda coba jalankan dengan menggunakan perintah which [command]. Misalnya, which llvm-configharus membaca /usr/local/bin/llvm-config. Lihat en.wikipedia.org/wiki/Which_%28Unix%29 untuk info lebih lanjut.
andyg0808
mengapa llvm-config tidak ditautkan ke llvm-config-3.2 sama seperti untuk gcc? apakah ini pilihan sadar?
Janus Troelsen
@ JanusTroelsen Saya percaya ini adalah pilihan sadar. Karena versi LLVM yang tersedia dari llvmpaket untuk Ubuntu 12.04 adalah llvm-2.9, llvm-configperintah itu ditautkan ke llvm-configdari versi yang sama, yaitu llvm-config-2.9,. Di Ubuntu 13.04 dan 13.10, llvmpaket menginstal LLVM 3.2, dan saya berharap untuk mengaturnya llvm-config-3.2seperti llvm-configyang dilakukan di Ubuntu 13.10.
andyg0808