2012-02-07 32 views
5

LLVM cung cấp 2 công cụ llvm-link và llvm-ld. Tôi muốn biết:Cách sử dụng liên kết llvm?

  • cách hợp nhất tất cả tệp .o trong một?

  • cách đặt soname như thế nào với gcc -Wl, -soname, libsomething.so.1?

Tôi muốn làm điều này trong C++ nhưng nếu chỉ cho tôi cách thực hiện điều đó từ dòng lệnh, tôi sẽ tìm thấy cách thực hiện trong C++.

nhờ

+0

Chính xác thì bạn đang cố gắng làm gì? Liên kết các tệp đối tượng hoặc tệp bitcoin LLVM? Tạo một .so? –

Trả lời

9
  • llvm-link là một công cụ để liên kết (~ sáp nhập) file LLVM IR vào một tập tin LLVM IR.
  • llvm-ld cố gắng tương thích với ld. Lưu ý rằng LLVM hiện không có khả năng liên kết thực, do đó, llvm-ld gọi gcc để thực hiện các giai đoạn cuối cùng thực tế.

Lưu ý rằng nếu bạn chỉ muốn có chức năng của GCC, sử dụng người lái xe kêu vang:

clang -c file.c -fpic 
clang -shared file.o -o file.so 

Bạn cũng có thể vượt qua -Wl cờ để clang như bạn muốn làm cho gcc:

clang -shared file.o -Wl,-soname,libfile.so.8 -o file.so 
+2

Để thêm vào điều này, xin vui lòng không sử dụng llvm-ld trực tiếp. Heck, xin vui lòng không bao giờ sử dụng bất kỳ linker trực tiếp trừ khi bạn biết chính xác những gì bạn đang làm và bạn không có một trình điều khiển trình biên dịch để xử lý nó cho bạn. – echristo

+3

Chỉ cần một gợi ý, trên Mac, sử dụng '-dynamiclib' để thay thế 'chia sẻ ....- Wl, -soname, libxxxxx' part – clsung

+0

@clsung cảm ơn bạn! – Cfr

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