2011-12-12 18 views
60

gcc ve ld, kütüphaneler için bir arama yolu belirlemenin birçok yolu sunar; bunlar arasında -rpath ve -L bayrakları bulunur. Man tabloları, bu iki bayrak arasında hiçbir fark olmadığını ortaya koymakta, her bir bayrak etkin bir şekilde kütüphane arama yoluna bir kitaplık eklediğini belirtmektedir. Yine de her iki bayrak da tam olarak aynı şeyi yapıyor garip görünüyor. Bu iki seçenek arasında var olan farklar nelerdir?-rpath ve -L arasındaki fark nedir?

+1

Belki de -rpath-link'i mi düşünüyorsunuz? – ams

cevap

68

Sen man sayfalarını bazı eski kopyaları okuma olmalıdır (vurgu eklenmiştir):

-rpath = dir
            çalışma zamanı kütüphane arama yoluna bir dizin ekleyin. Bu, bir ELF yürütülebilir dosyasını paylaşılan nesnelerle ilişkilendirirken
          kullanılır. Tüm
            zamanında paylaşılan nesneleri bulmak için kullanır ki,
            argümanlar birleştirilmiş ve zamanı bağlayıcı geçirilir -rpath.

vs

-L searchdir
--library yollu = searchdir
            ld arayacaktır Yolların listesine yolu searchdir ekle
            arşiv kütüphaneleri ve ld denetim komut dosyaları.

Yani, -L bağlarken karşı bağlamak için kütüphanelere aramaya ld söyler. Bunu (örneğin), yapı ağacınızdaki kütüphanelere karşı oluştururken kullanırsınız; bu, make install tarafından normal sistem kitaplığı yollarına yerleştirilir. Diğer yandan, --rpath, yürütülebilir dosyanın içinde bu yolu depolar, böylece çalışma zamanı dinamik bağlayıcısı kitaplıkları bulabilir. Kitaplıklarınız sistem kitaplığı arama yolunun dışında olduğunda bunu kullanırsınız.

+7

Notlar: 1. Birinin ihtiyaç duyduğu çoğu zaman -rpath =/some/weird/path', birinin de '-L/some/weird/path' olması gerekir. 2. '' gcc' ile kullanım gerekir '-Wl, -rpath = dir'. –

+2

Hala neden ikisine ihtiyaç olduğunu anlamıyorum. Benimle aynı tecrübeye sahibim. Yukarıdaki. Kütüphaneden yapım aşamasında hangi bilgilere ihtiyaç var? Sebep olası h-dosyaları dışında. Ama sanırım başka bir şey ... –

+1

@FredrikJohansson Yeni bir soru için mantıklı bir konu olabilir (elbette, daha önce sorulmamış olduğunu varsayarak). En azından mevcut sembollere ihtiyaç var ama muhtemelen başka şeyler de var. – derobert

İlgili konular