2013-01-14 24 views
7

Theo LLVM's Getting Started (Windows) site:Tại sao clang/llvm trên windows yêu cầu Visual Studio của Link.exe?

... Clang có thể được sử dụng để phát ra bitcode, trực tiếp phát ra các file đối tượng hoặc thực thi thậm chí liên kết sử dụng link.exe Visual Studio.

Tại sao việc sử dụng Link.exe trên Windows cần thiết? Và, cho rằng vấn đề, những gì được sử dụng trên Mac/Linux? Hơn nữa xuống nó nói:

Compile the program to object code using the LLC code generator: 
    C:\..> llc -filetype=obj hello.bc 
Link to binary using Microsoft link: 
    C:\..> link hello.obj -defaultlib:libcmt 

Tại sao LLC không thể thực hiện bước cuối cùng? LLI dường như làm việc tốt vì vậy tôi giả định rằng nó tương tác với link.exe bằng cách nào đó dưới mui xe - tại sao không thể LLC?

Trả lời

11

Vì không có ai viết liên kết cho LLVM.

Có một dự án để làm như vậy (được gọi là, unimaginatively lld) nhưng chưa sẵn sàng.

Xem http://lld.llvm.org để biết thêm chi tiết.

Trên máy Mac, mọi người sử dụng trình liên kết của Apple, ld.

Trên Linux, hầu hết mọi người sử dụng các mối liên kết gnu, thường (cũng) có tên ld

+0

Tôi đoán điều này có nghĩa là LLVM không làm LTO? – Mehrdad

+0

@Mehrdad: LLVM thực hiện LTO ở cấp IR. Nhưng ngay cả khi một tập tin thực thi được tạo ra từ một tệp .s duy nhất, nó vẫn phải được liên kết. –

+1

@Mehrdad, cả 'gold' và Mac' ld' đều có thể sử dụng plugin LLVM cho LTO. –

5

Hãy thử ld MinGW-W64 của. Tôi đã sử dụng nó với tiếng lóng của llvm thay vì các công cụ VS mà tôi đã sử dụng để xây dựng clang ngay từ đầu.

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