Để thuận tiện, tôi đã thêm các trang có liên quan bên dưới.Tôi không hiểu -Wl, -rpath -Wl,
của tôi (mis) hiểu biết đầu tiên: Nếu tôi cần phải lựa chọn riêng với ,
, đó có nghĩa là thứ hai -Wl
không phải là một lựa chọn khác bởi vì nó đến trước ,
có nghĩa là nó là một cuộc tranh cãi đến tùy chọn -rpath
.
Tôi không hiểu cách -rpath
có thể có đối số -Wl,.
!
Điều gì sẽ có ý nghĩa trong tâm trí của tôi sẽ là:
-Wl,-rpath .
này nên gọi tùy chọn mối liên kết -rpath với đối số thư mục hiện hành.
man gcc:
-Wl, tùy chọn
đèo lựa chọn như một tùy chọn để các mối liên kết. Nếu tùy chọn chứa dấu phẩy, thì được chia thành nhiều tùy chọn tại các dấu phẩy . Bạn có thể sử dụng cú pháp này để chuyển đối số cho tùy chọn. Ví dụ: ,
-Wl,-Map,output.map
vượt qua-Map output.map
cho trình liên kết. Khi sử dụng trình liên kết GNU, bạn cũng có thể nhận được cùng tác dụng với `-Wl, -Map = output.map '.
người ld:
-rpath = dir
Thêm một thư mục vào đường dẫn tìm kiếm thư viện runtime. Đây là được sử dụng khi liên kết tệp thực thi ELF với các đối tượng dùng chung. Tất cả các đối số -rpath được nối và chuyển qua tới trình liên kết thời gian chạy, sử dụng chúng để định vị đối tượng được chia sẻ khi chạy. Tùy chọn -rpath cũng được sử dụng khi định vị các đối tượng được chia sẻ là cần thiết bởi các đối tượng được chia sẻ rõ ràng được bao gồm trong liên kết;
Ồ tôi hiểu bây giờ, không có phân biệt đối xử giữa tùy chọn hoặc đối số trong khi truyền nội dung cho trình liên kết, nó chỉ là một chuỗi. Vì vậy, thứ hai -Wl là dư thừa! Cảm ơn :) – Blub
@Blub: Không cần thiết! Đó là một dạng thay thế, bạn * hoặc * nói '-Wl, -rpath, .' * hoặc * bạn nói' -Wl, -rpath -Wl, .'. Chính xác là một trong hai, bạn không thể bỏ qua bất cứ điều gì. –