Apa perbedaan antara -rpath dan -L?

91

gccdan ldmenyediakan banyak cara untuk menentukan jalur pencarian perpustakaan — di antaranya adalah tanda -rpathdan -L. Halaman manual tidak menunjukkan perbedaan antara kedua tanda ini, yang secara efektif mengatakan setiap tanda menambahkan pustaka ke jalur pencarian pustaka. Namun nampaknya aneh bahwa kedua bendera melakukan hal yang persis sama. Apa perbedaan, jika ada, antara kedua opsi ini?

Craig M. Brandenburg
sumber
2
Mungkin Anda sedang memikirkan -rpath-link?
pagi

Jawaban:

107

Anda harus membaca beberapa salinan dari halaman manual (penekanan ditambahkan):

-rpath = dir
      Tambahkan direktori ke jalur pencarian perpustakaan runtime . Ini digunakan
      saat menautkan ELF yang dapat dieksekusi dengan objek bersama. Semua
      argumen -rpath digabungkan dan diteruskan ke runtime linker, yang
      menggunakannya untuk menemukan objek bersama pada waktu proses .

vs.

-L searchdir
--library-path = searchdir
      Tambahkan path searchdir ke daftar path yang akan dicari ld untuk
      perpustakaan arsip dan skrip kontrol ld.

Jadi, -Lberi tahu ldtempat mencari pustaka untuk ditautkan saat menautkan. Anda menggunakan ini (misalnya) saat Anda membuat library di pohon build Anda, yang akan diletakkan di jalur library sistem normal oleh make install. --rpath, di sisi lain, menyimpan jalur tersebut di dalam file yang dapat dieksekusi, sehingga linker dinamis waktu proses dapat menemukan pustaka. Anda menggunakan ini saat perpustakaan Anda berada di luar jalur pencarian perpustakaan sistem.

derobert
sumber
18
Catatan: 1. Sering kali ketika seseorang membutuhkan -rpath=/some/weird/path, ia -L /some/weird/pathjuga membutuhkan . 2. Dengan gccsatu kebutuhan -Wl,-rpath=dir.
n. 'kata ganti' m.
5
Saya masih tidak mengerti mengapa keduanya dibutuhkan. Saya punya pengalaman yang sama seperti nm di atas. Informasi apa yang dibutuhkan dari perpustakaan pada waktu pembangunan? Terlepas dari kemungkinan file-h, penyebabnya. Tapi itu hal lain yang kurasa ...
Fredrik Johansson
1
@FredrikJohansson Itu akan menjadi subjek yang masuk akal untuk pertanyaan baru (dengan asumsi itu belum pernah ditanyakan, tentu saja). Simbol yang tersedia diperlukan, setidaknya, tetapi mungkin ada hal lain.
derobert
4
Pertanyaan tindak lanjut ditambahkan di: stackoverflow.com/questions/28096133/…
Fredrik Johansson