-Rpath ve -L arasındaki fark nedir?


91

gccve ldkitaplıklar için bir arama yolu belirtmek için birçok yol sağlar - aralarında -rpathve -Lişaretleri de vardır. Yönetim sayfaları, her bir bayrağın kitaplık arama yoluna bir kitaplık eklediğini etkili bir şekilde söyleyerek bu iki bayrak arasında hiçbir fark göstermez. Yine de her iki bayrağın da tamamen aynı şeyi yapması garip görünüyor . Bu iki seçenek arasındaki eğer varsa farklar nelerdir?


2
Belki düşünüyorsun -rpath-link?
ams

Yanıtlar:


107

Yönetim sayfalarının bazı eski kopyalarını okuyor olmalısınız (vurgu eklenmiştir):

-rpath = dir Çalışma zamanı kitaplığı arama yoluna
      bir dizin ekleyin . Bu,       bir ELF yürütülebilir dosyasını paylaşılan nesnelere bağlarken kullanılır . Tüm -rpath       argümanları birleştirilir ve çalışma zamanına iletilir


      paylaşılan nesneleri bulmak için bunları kullanan bağlayıcısına .

vs.

-L searchdir
--library yolu = searchdir
      o yolların listesine ekle yolu searchdir ld arayacaktır
      arşiv kütüphaneler ve ld kontrol komut dosyaları.

Yani, -Lbağlanırken ldbağlantı kurulacak kitaplıkların nerede aranacağını söyler . Bunu (örneğin), normal sistem kitaplığı yollarına tarafından yerleştirilecek olan derleme ağacınızdaki kitaplıklara karşı inşa ederken kullanırsınız make install. --rpath, diğer yandan, bu yolu yürütülebilir dosyanın içinde depolar, böylece çalışma zamanı dinamik bağlayıcı kitaplıkları bulabilir. Kitaplıklarınız sistem kitaplığı arama yolunun dışındayken bunu kullanırsınız.


18
Notlar: 1. Çoğu zaman birinin ihtiyacı olduğunda -rpath=/some/weird/path, ona da ihtiyaç vardır -L /some/weird/path. 2. Kullanılması gccgerekir -Wl,-rpath=dir.
n. zamirler 'm.

5
Hâlâ her ikisine de neden ihtiyaç duyulduğunu anlamıyorum. Yukarıdaki nm ile aynı deneyime sahibim. Derleme sırasında kitaplıktan hangi bilgiler gereklidir? Olası h dosyalarından ayrı olarak, sebep. Ama bu sanırım başka bir şey ...
Fredrik Johansson

1
@FredrikJohansson Bu, yeni bir soru için makul bir konu olurdu (tabii ki daha önce sorulmadığını varsayarak). En azından mevcut sembollere ihtiyaç vardır, ancak muhtemelen başka şeyler de vardır.
derobert

4
Takip sorusu şu adrese eklendi: stackoverflow.com/questions/28096133/…
Fredrik Johansson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.