cài đặt llvm và clang trên Ubuntu


16

Vì vậy, tôi đang cố gắng cài đặt Halide trên Ubuntu 12.04 (64 bit). Tôi cần llvm-3.2 và clang để được cài đặt.

Chạy sudo apt-get install llvm-3.2kết thúc với 'gói không tìm thấy'.

Dùng thử sudo apt-get install llvmhoặc sudo apt-get install clangcài đặt phiên bản 2.9. Google đã giúp tôi với điều này

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

Bây giờ, sudo apt-get install llvm-3.2 clang-3.2làm việc. Nhưng khi tôi chạy make trong thư mục Halide tôi vẫn nhận được tiếng kêu: Không tìm thấy lệnh.


2
Tôi cho rằng "clag: Lệnh không tìm thấy" nên đọc "clang: Lệnh không tìm thấy"?
andyg0808

vâng, xin lỗi về điều đó

Bạn đang sử dụng Ubuntu với GUI hay chỉ với một dòng lệnh?
andyg0808

Ngoài ra, bạn có cần clang 3.2 hay chỉ clang 3+?
andyg0808

Tôi đã tải xuống phiên bản Desktop. Tôi thực sự cần llvm 3.2, không có thông tin gì về phiên bản clang.

Câu trả lời:


9

Ok, vì vậy tôi biên soạn thành công nhũ tương trên Ubuntu 13.04 bằng cách cài đặt llvm, clangbuild-essential. Tôi chỉ đoán được vấn đề của bạn là LLVM hoặc tiếng kêu từ PPA bạn đã cài đặt có thể không hoạt động hoàn toàn đúng. Có vẻ như thực sự có thể lấy LLVM 3.2 từ Ubuntu cho 12.04, thông qua cái được gọi là kho lưu trữ "được đề xuất". Bạn có thể thử thanh trừng LLVM mà bạn có và cài đặt nó từ "đề xuất". Tôi sẽ giải thích làm thế nào để làm điều đó dưới đây. Vì bạn đã đề cập rằng bạn chưa quen với Ubuntu (trong phiên bản câu hỏi ban đầu), trước tiên tôi sẽ giải thích mỗi lệnh bạn đã sử dụng là gì, tốt nhất có thể.

Vì vậy, hãy sudo apt-get install llvm-3.2cố gắng cài đặt gói có tên llvm-3.2từ kho lưu trữ hiện tại được bật trên hệ thống của bạn. Trong trường hợp của bạn, nó không thể được tìm thấy, vì vậy lệnh thất bại. sudo apt-get install llvmđã cài đặt llvmgói, có lẽ là gói đặc biệt chỉ sử dụng LLVM cập nhật nhất có sẵn trong kho lưu trữ tiêu chuẩn của bạn. Trong trường hợp của bạn, đó là 2.9. Ý tưởng tương tự áp dụng cho sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds thêm những gì được gọi là lưu trữ gói cá nhân hoặc PPA vào hệ thống của bạn. Điều này cho phép bạn có thêm phần mềm từ kho lưu trữ khác hoặc nguồn phần mềm. Xem https://help.launchpad.net/Packaging/PPA để biết thêm thông tin. Cuối cùng,sudo apt-get updatenói với Ubuntu để có được thông tin về những gói có sẵn từ kho hiện có. Bạn có thể có một cái nhìn tại http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html để biết thêm về quản lý gói Debian (hầu hết trong số đó nên áp dụng đối với Ubuntu là tốt, vì Ubuntu dựa trên Debian).

Vì vậy, các bước để loại bỏ các gói bạn đã có và cài đặt các phiên bản có sẵn từ đề xuất chính xác:

  1. Sử dụng sudo apt-get purge llvm-3.2 clang-3.2để loại bỏ hoàn toàn LLVM và clang khỏi hệ thống của bạn.
  2. (Tùy chọn) Sử dụng sudo add-apt-repository --remove ppa:kxstudio-team/buildsđể xóa PPA khỏi hệ thống của bạn.
  3. Thực hiện theo các hướng dẫn tại https://wiki.ubfox.com/Testing/EnableProposes để kích hoạt kho lưu trữ được đề xuất (ngay trên đầu trang) và cũng làm theo hướng dẫn cho "Nâng cấp có chọn lọc từ -proposed". Phần đầu tiên sẽ cho phép phiên bản Ubuntu thực sự của llvm-3.2gói và phần thứ hai sẽ ngăn hệ thống cố gắng nâng cấp mọi thứ lên các phiên bản Đề xuất.
  4. Sử dụng sudo apt-get updateđể lấy thông tin về các gói và phiên bản hiện có sẵn.
  5. Sử dụng sudo apt-get install llvm-3.2/precise-proposedđể cài đặt LLVM 3.2 và sử dụng sudo apt-get install clang/precise-proposedđể cài đặt Clang 3.0 (Tôi nghĩ đó là phiên bản bạn sẽ nhận được).
  6. BƯỚC MỚI: Làm sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configđể làm cho hệ thống xử lý llvm-config-3.2(đó là llvm-configđi kèm llvm-3.2) như llvm-config. Hoàn toàn hơn, điều này tạo ra một liên kết tượng trưng (hoặc symlink) đến llvm-config-3.2 ở một nơi khác, nơi Ubuntu sẽ tìm kiếm các chương trình (thông tin thêm: ln , FHS , PATH ). Do đó, khi bạn chạy "llvm-config", Ubuntu sẽ tìm liên kết tượng trưng và chạy chương trình mà nó trỏ đến ( llvm-config-3.2).
  7. Xem nếu mọi thứ biên dịch chính xác bây giờ.

Hy vọng rằng hoạt động. Tôi đã không kiểm tra bất kỳ thứ gì trong số này, vì vậy hãy tự chịu rủi ro khi sử dụng, v.v. Tuy nhiên, tôi khá chắc chắn rằng nó không nên làm bất cứ điều gì tồi tệ.

EDIT: Lưu ý rằng llvmllvm-3.2là độc lập.llvmphụ thuộc vào llvm-2.9( xem tại đây ), trong khi llvm-3.2riêng biệt ( xem phụ thuộc tại đây )

Ngoài ra, tôi không chắc nếu bạn biết về việc hoàn thành tab ; nó có thể hữu ích nếu bạn đang tìm kiếm một lệnh nhưng không biết rõ tên đó (ví dụ, trong trường hợp này, nó có thể đã chỉ ra rằngllvm-config được gọi llvm-config-3.2).


Cảm ơn rất nhiều! Nó gần như đã làm việc. Vấn đề duy nhất là llvm-3.2 đã cài đặt không có llvm-config. Vì vậy, khi tôi chạy make in Halide, nó báo không có llvm nào được cài đặt. Tôi đã chạy cài đặt llvm và bây giờ llvm-config --version nói 2.9. Nếu tôi cố gắng cài đặt llvm-3.2, nó sẽ cho tôi biết đó là phiên bản mới nhất. Có vẻ như llvm-3.2 và llvm hoàn toàn độc lập.

Xem bước mới trong câu trả lời; có thể bạn sẽ muốn gỡ cài đặt llvmgói ( sudo apt-get purge llvm) trước khi bạn thực hiện để đảm bảo bạn có được phiên bản phù hợp. Bạn luôn có thể kiểm tra tập tin nào bạn đang cố chạy bằng cách sử dụng lệnh which [command]. Ví dụ, which llvm-confignên đọc /usr/local/bin/llvm-config. Xem en.wikipedia.org/wiki/Which_%28Unix%29 để biết thêm thông tin.
andyg0808

Tại sao llvm-config không được liên kết với llvm-config-3.2 giống như nó dành cho gcc? Đây có phải là một sự lựa chọn có ý thức?
Janus Troelsen

@JanusTroelsen Tôi tin rằng đó là một lựa chọn có ý thức. Do phiên bản LLVM có sẵn từ llvmgói cho Ubuntu 12.04 là llvm-2.9, nên llvm-configlệnh được liên kết với llvm-configcùng một phiên bản, nghĩa là , llvm-config-2.9. Trong Ubuntu 13.04 và 13.10, llvmgói cài đặt LLVM 3.2 và tôi mong đợi nó sẽ được thiết lập llvm-config-3.2như llvm-configtrong Ubuntu 13.10.
andyg0808
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.