Sự khác biệt giữa -rpath và -L là gì?


89

gccldcung cấp nhiều cách để chỉ định một đường dẫn tìm kiếm cho các thư viện — trong số đó có -rpath-Lcờ. Các trang này không tiết lộ sự khác biệt nào giữa hai cờ này, có nghĩa là mỗi cờ sẽ thêm một thư viện vào đường dẫn tìm kiếm thư viện. Tuy nhiên, có vẻ như kỳ lạ rằng cả hai lá cờ làm chính xác những điều tương tự. Sự khác biệt, nếu có, giữa hai tùy chọn này là gì?


2
Có lẽ bạn đang nghĩ đến -rpath-link?
ams

Câu trả lời:


106

Bạn phải đang đọc một số bản sao lỗi thời của các trang (phần nhấn mạnh được thêm vào):

-rpath = dir
      Thêm một thư mục vào đường dẫn tìm kiếm thư viện thời gian chạy . Điều này được sử dụng
      khi liên kết tệp thực thi ELF với các đối tượng được chia sẻ. Tất cả các
      đối số -rpath được nối và chuyển đến trình liên kết thời gian chạy , trình liên kết này
      sử dụng chúng để định vị các đối tượng được chia sẻ trong thời gian chạy.

vs.

-L searchdir
--library-path = searchdir
      Thêm đường dẫn searchdir vào danh sách các đường dẫn mà ld sẽ tìm kiếm các
      thư viện lưu trữ và các tập lệnh điều khiển ld.

Vì vậy, hãy -Lcho biết ldnơi tìm thư viện để liên kết khi liên kết. Bạn sử dụng điều này (ví dụ) khi bạn đang xây dựng dựa trên các thư viện trong cây xây dựng của mình, các thư viện này sẽ được đưa vào các đường dẫn thư viện hệ thống bình thường bởi make install. --rpathmặt khác, lưu trữ đường dẫn đó bên trong tệp thực thi, để trình liên kết động thời gian chạy có thể tìm thấy các thư viện. Bạn sử dụng điều này khi thư viện của bạn nằm ngoài đường dẫn tìm kiếm thư viện hệ thống.


16
Ghi chú: 1. Hầu hết khi một người cần -rpath=/some/weird/path, một người -L /some/weird/pathcũng cần . 2. Với gccmột nhu cầu sử dụng -Wl,-rpath=dir.
n. 'đại từ' m.

4
Tôi vẫn không hiểu tại sao cả hai đều cần thiết. Tôi có kinh nghiệm tương tự như nm ở trên. Thư viện cần thông tin gì tại thời điểm xây dựng? Ngoài các tập tin h có thể có, nguyên nhân. Nhưng đó là một điều tôi đoán ...
Fredrik Johansson

1
@FredrikJohansson Đó sẽ là một chủ đề hợp lý cho một câu hỏi mới (tất nhiên là giả sử nó chưa được hỏi). Các ký hiệu có sẵn là cần thiết, ít nhất, nhưng có lẽ còn những thứ khác.
derobert

4
Câu hỏi tiếp theo được thêm tại: stackoverflow.com/questions/28096133/…
Fredrik Johansson,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.