2012-08-29 42 views
5

DMD 2.60 trên Ubuntu 12.04 ... Tôi muốn tạo một nhị phân tĩnh, để tôi có thể chạy nó trong một môi trường cũ. dmd không có cờ '-static'. tôi đã cố gắng đi qua cờ '-static' để mối liên kết với "-L tĩnh ... DMD" - thông báo lỗi đượcLàm thế nào để biên dịch nhị phân tĩnh?

/usr/bin/ld: cannot find -lgcc_s 

Biên dịch mã C với "gcc -static ..." hoạt động tốt. Đó có phải là điều tôi nhớ không? Cảm ơn!

+0

Bạn luôn có thể cố gắng biên dịch chỉ các nguồn D và sử dụng LD theo cách thủ công để liên kết ... Tôi nghĩ rằng tôi chưa bao giờ thử nó, nhưng có vẻ như đáng để thử. – DejanLekic

Trả lời

3

It doesn't currently work if you use dmd to link do cách nó chuyển cờ liên kết cờ đến trình liên kết. Bạn cần phải xây dựng mọi thứ với -c để tạo tệp đối tượng và sau đó liên kết các tệp đó theo cách thủ công với gcc hoặc ld.

Tôi nên chỉ ra rằng mặc dù nói chung, liên kết tĩnh glibc được coi là một ý tưởng tồi. Nó có thể làm việc rất tốt và là giải pháp đúng trong trường hợp của bạn, nhưng nó chắc chắn có các vấn đề tiềm ẩn (tôi không nhớ chi tiết). Vì vậy, bạn có lẽ không nên làm điều đó trừ khi bạn thực sự cần.

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