Nếu bạn có nhiều tệp nguồn, có lẽ bạn thực sự muốn sử dụng tối ưu hóa thời gian liên kết để xuất một tệp bitcode cho toàn bộ chương trình. Các câu trả lời khác được đưa ra sẽ khiến bạn kết thúc với một tệp bitcode cho mọi tệp nguồn.
Thay vào đó, bạn muốn biên dịch với tối ưu hóa thời gian liên kết
clang -flto -c program1.c -o program1.o
clang -flto -c program2.c -o program2.o
và cho bước liên kết cuối cùng, thêm đối số -Wl, -plugin-opt = cũng-emit-llvm
clang -flto -Wl,-plugin-opt=also-emit-llvm program1.o program2.o -o program
Điều này cung cấp cho bạn cả chương trình được biên dịch và mã bit tương ứng với nó (chương trình.bc). Sau đó, bạn có thể sửa đổi chương trình.bc theo bất kỳ cách nào bạn muốn và biên dịch lại chương trình đã sửa đổi bất cứ lúc nào bằng cách thực hiện
clang program.bc -o program
mặc dù lưu ý rằng bạn cần bao gồm bất kỳ cờ liên kết cần thiết nào (cho các thư viện bên ngoài, v.v.) ở bước này một lần nữa.
Lưu ý rằng bạn cần phải sử dụng trình liên kết vàng để làm việc này. Nếu bạn muốn buộc clang sử dụng một trình liên kết cụ thể, hãy tạo một liên kết tượng trưng đến trình liên kết đó có tên "ld" trong một thư mục đặc biệt có tên "fakebin" ở đâu đó trên máy tính của bạn và thêm tùy chọn
-B/home/jeremy/fakebin
đến bất kỳ bước liên kết ở trên.