2013-07-22 29 views
7

Lần cuối cùng tôi kiểm tra trên clang nó đã ở phiên bản 3.1/3.2, bây giờ tôi đang dưới Ubuntu 13.04 64 bit và tôi cài đặt clang và llvm (cộng với các công cụ) từ kho lưu trữ apt chính thức nhưng không có dấu vết của llvm-ld-3.4, llvm-ld-3.0llvm-ld-3.1 là 2 phiên bản duy nhất của công cụ này có sẵn trên máy tính của tôi, câu hỏi của tôi là: whit những gì tôi phải thay thế llvm-ld và tạo một thư viện hoặc một máy thực thi?llvm-ld vẫn tồn tại cho clang 3.4?

Trả lời

14

llvm-ld không còn tồn tại. Từ LLVM 3.2 release notes:

llvm-ld và llvm-sơ khai đã được loại bỏ, chức năng llvm-ld có thể được thay thế một phần bởi llvm-link | opt | {llc | as, llc -filetype = obj} | ld, hoặc được thay thế hoàn toàn bởi Clang.

Hoặc, trong một định dạng đẹp hơn:

  1. liên kết tất cả .bc/file .ll của bạn với llvm-link, để có được một file bitcode
  2. Run opt để tối ưu hóa các tập tin bitcode
  3. Tạo một tệp đối tượng, thông qua một trong số
    • llc để lấy tệp asm, sau đó lắp ráp hệ thống (as) vào ge t một tập tin đối tượng
    • llc -filetype=obj để có được một tập tin đối tượng (điều này chỉ gọi là lắp ráp hệ thống ngày của riêng mình)
  4. Hệ thống liên kết (ld) để liên kết các file đối tượng của bạn với tất cả các file đối tượng cần thiết khác

Đối với lý do tại sao nó đã bị xóa, hãy xem this LLVM-dev discussion.

Ngoài ra, bạn có thể quan tâm đến câu hỏi liên quan này: How to link object to libraries with LLVM >= 3.1 ? (no GNU ld)

+0

về cơ bản, tùy chọn duy nhất là GNU 'ld'? Tôi tò mò về lý do tại sao họ đã làm điều này và những gì xảy ra trong một môi trường MAC OS X, họ sử dụng 'ld' theo MAC quá? Sự tò mò của tôi cũng là về mức tối ưu hóa '-O4', phải làm gì trong trường hợp này? – user2485710

+0

@ user2485710 đã cập nhật câu trả lời của tôi. Các liên kết tôi đã cung cấp cũng đề cập đến việc LTO hoạt động. – Oak

Các vấn đề liên quan