Programım libcurl.so.3
'a bağlı, ancak RHEL6'da bu gibi yumuşak bir yumuşaklık yok libcurl.so.3 ->libcurl.so.4
(programım bu bağlantıyı oluşturduğumda sorunsuz olarak çalışabilir). Ama böyle yumuşak bir bağlantı var: libcurl.so->libcurl.so.4
.Doğrudan bir ikili SONAME değiştirmenin herhangi bir yolu var mı?
libcurl.so.3.0.0.0
'u
libcurl.so.3
'dan
libcurl.so
'a değiştirmek istiyorum. Sonra programımı RHEL 6'da kendimden yumuşak bir bağlantı oluşturmadan çalıştırabilirim.
Belki benim çözüm aptal, ama ikili doğrudan ilginç bir şey nasıl değiştirileceğini öğrenme düşünüyorum. Teşekkür Tahnk Yorumunuza, devnull için
. belki açık söylemedim.
$ readelf -d libcurl.so.3.0.0
ofset 0x303cc deDinamik segmenti 25 girdileri içerir:
Etiket Tür Ad/Değer
0x00000001 (GEREKLİ) Paylaşılan kitaplık: [libssl .so.2]
0x0000000e (sONAME) Kütüphane soname: [libcurl.so.3] ---> ilibcurl.so bu değiştirmek istiyorum Uygulamanız belirli libc'nin (libc.so.6) bağlıdır zaman
sen * * Bir dosya veya bu * bir ikili * değiştirerek değil bir sembolik yeniden adlandırma olduğunu bahsediyoruz ne. – devnull
Sen, "libcurl.so.4" bir kopyasını oluşturmak bunu için "libcurl.so.3" adlandırmak ve "libcurl.so.3 "libcurl.so.4" dan SONAME girişini yeniden adlandırmak için onaltılık editörü kullanabilirsiniz ". Çoğu zaman bu çalışmaz, çünkü sürüm bilgisi de dinamik kütüphanelerde mevcuttur. –
Bence bunu yapmanın en kolay yolu libcurl'u yeniden inşa etmek ve istediğiniz SONAME'e sahip olmak için yapı kurallarını kesmek. Yapım sonrası değişiklikler için, ikili sürümü tavsiye etmem. Http://nixos.org/patchelf.html ELF formatının yamalanması ile ilgili bir proje var, SONAME'in değiştirilmesine izin vermiyor, ancak böyle bir şeyin nasıl uygulanacağı konusunda biraz fikir verebilir. – joetde