2015-05-21 18 views
5

Bir yürütülebilir dosyanın rpath, bir çalışma zamanında paylaşılan nesneleri arayacak şekilde bir veya daha fazla dizin belirtir.Paylaşılan bir nesne dosyasının rpath'i

Soruma bakın: kendileri de paylaşılan nesne dosyalarını statik olarak derlenmiş rpath s var mı? - mylib.so, bir statik rpath derlenmiş vardır

./example: /opt/swt/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./mylib.so) 

Bu hata aslında kütüphane kendisi bana gösterir: paylaşılan nesne ile bağlarken

Geçenlerde bir çalışma zamanı hatası aldı.

Anlaşmam, rpath yalnızca paylaşılan nesneler için değil, yürütülebilir dosyalara uygulandı. rpath da paylaşılan nesneler için geçerli mi?

cevap

3

yapmak paylaşılan nesne ayrıca dosyalarının kendilerini

rpaths statik-derledik Olabilir (veya olmayabilir) onlar -Wl,-rpath=... seçeneği ile bağlantılı olduğunu olmadığına bağlı. mylib.so, bir statik rpath derlenmiş var -

Bu hata

aslında kütüphane kendisi bana gösterir.

hata mesajı değil bu hiç söylemek yok. Bu fikri nereden edindin? Eğer mylib.soDT_RPATH sahip olup olmadığını bilmek istiyorsanız

Bunu yapmak:

readelf -d mylib.so | grep 'R.*PATH' # could also have RUNPATH 

Benim anlayış rpath sadece yürütülebilir değil paylaşılan nesneler uygulanan olmasıydı. rpath, paylaşılan nesneler için de geçerli mi?

Sizin anlayış yanlıştır

ve RPATH (ve RUNPATH) gibi iyi paylaşılan nesneler için çalışır.

İlgili konular