«dynamic-linking» etiketlenmiş sorular

Hesaplamada dinamik bir bağlantı, bir işletim sisteminin (OS), çalışma zamanında çalıştırılabilir bir dosyanın ihtiyaç duyduğu paylaşılan kitaplıkları yükleyen (kalıcı depolama alanından RAM'e kopyalar) ve bağlanan (atlama tablolarını doldurur ve işaretçileri yeniden konumlandırır) işlemidir, yani, yürütülür.

4
SO (paylaşılan nesne) sayıları nasıl çalışır?
Linux altındaki paylaşılan nesnelerin "sayılar" kullandığını, yani paylaşılan nesnenin farklı sürümlerine farklı uzantılar verildiğini biliyorum, örneğin: example.so.1 example.so.2 Anladığım kadarıyla, bir kütüphanede iki sürümün bir sistemde bulunabileceği (Windows'taki "DLL Hell" in aksine) iki ayrı dosyaya sahip olmak olduğunu biliyorum. Bunun pratikte nasıl çalıştığını bilmek ister misiniz? Çoğu zaman bunun example.soaslında …

4
Çalıştırılabilir dosyalar çalışma zamanında paylaşılan nesneleri nerede arar?
Bağlantı / derleme zamanında paylaşılan nesnelerin nasıl tanımlanacağını anlıyorum. Bununla birlikte, çalıştırılabilir dosyaların *.soyürütme zamanında paylaşılan nesneyi ( kitaplıkları) nasıl aradıklarını merak ediyorum . Örneğin, uygulamam kütüphanede a.outtanımlanan işlevleri çağırıyor lib.so. Derledikten sonra, lib.soiçinde yeni bir dizine geçiyorum $HOME. a.outOraya gidip onu aramayı nasıl söyleyebilirim ?

2
64-bit bir sistemde 32-bit bir ikili çalıştırırken “Bulunamadı” mesajı alınıyor
Şu anda debian konusunda garip bir sorunum var (wheezy / amd64). Bir sunucu yüklemek için bir chroot oluşturdum (bu konuda daha fazla ayrıntı veremem, üzgünüm). Hadi onun yolunu diyelim /chr_path/. İşleri kolaylaştırmak için, bu chroot'u bir debootstrap (ayrıca wheezy / amd64) ile başlattım. Hepsi chroot içinde iyi çalışıyor gibiydi ama …


5
Linux'ta kitaplıkları yüklemek için hangi sistem çağrısı kullanılır?
In straceçıkışları, yürütülebilir dediğimiz kütüphanelere yolları için çağrılarda bulunmaktadır open(). Bu, sistem çağrısı dinamik olarak bağlanmış olan çalıştırılabilirler tarafından kullanılıyor mu? Ne hakkında dlopen()? open()Tahmin ettiğim bir çağrı değil, programların yürütülmesinde rol oynayacağını tahmin ediyorum.

3
Canlı bir sistemde tanımlanmış paylaşılan bir kütüphane sembolünün nerede olduğunu bulun / sisteme verilen tüm sembolleri listeler
Temel olarak, bu iki soruya tek bir sorudur - çünkü bir sistem içerisinde dışa aktarılan tüm sembolleri, paylaşılan kütüphane yollarıyla birlikte listeleyebilirsem, o zaman basitçe grepbu çıktıyı alabilirdim. Çekirdek sembolleri için sanırım biraz daha kolay - çünkü her zaman cat /proc/kallsymsbellekte yüklü olan modüllerin tüm sembollerinin bir listesini alabiliriz; daha …

4
Dosya yürütülebilir ve PATH içinde olsa bile Linux yürütülebilir dosyası “Dosya bulunamadı” ile başarısız oluyor
wineYürütülebilir dosyayı (Sürüm 2.12) başlatmak istiyorum , ancak aşağıdaki hatayı alıyorum ( $= kabuk istemi): $ wine bash: /usr/bin/wine: No such file or directory $ /usr/bin/wine bash: /usr/bin/wine: No such file or directory $ cd /usr/bin $ ./wine bash: ./wine: No such file or directory Ancak, dosya orada: $ which …

2
Paylaşılan kitaplığı çökmeden nasıl yükseltebilirim?
Burada yürütülebilir bir dosyayı yeniden yazabileceğinizi ve işlemin iyi çalışacağını söylüyor - bir işlem yeniden başladığında yeniden okunacaktır. Ancak, işlem çalışırken (scp, dev den test sunucusuna) bir ikili dosyayı değiştirmeye çalıştığınızda 'dosya meşgul' diyor. Ve paylaşılan bir kütüphane dosyasını (* .so) değiştirirsem, onu bağlayan tüm işlemler çöküyor. Neden öyle? Bir …

1
Neden Unix / Linux sistemleri, bağlantılı bir kütüphanenin gerekli sürümünü bulana kadar dizinler arasında geçiş yapmıyor?
Ben yerleştirilen bağlı bir kütüphane (libz.so.1.2.7) gerektiren "alfa" adlı bir ikili yürütülebilir dosya var /home/username/myproduct/lib/libz.so.1.2.7 Aşağıdaki komutu yürüterek ikili çalıştırılabilir dosyamı yumurtlamadan önce terminal örneğime de aktarıyorum. export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH Şimdi, aynı kütüphane gerektiren ancak farklı bir sürümü, yani (libz.so.1.2.8) kullanılabilir başka bir uygulama "bravo" doğurduğunda /lib/x86_64-linux-gnu/libz.so.1.2.8, sistem aşağıdaki hatayı atar. …

9
Java'yı Debian'da başlatma sorunu: “paylaşılan kütüphaneleri yüklerken hata: libjli.so”
Java'yı başlatmaya çalışıyorum: $ java -version java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory $ ldd /usr/lib/jvm/java-6-openjdk/jre/bin/java linux-gate.so.1 => (0xb779f000) libz.so.1 => /usr/lib/libz.so.1 (0xb7780000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7767000) libjli.so => /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libjli.so (0xb7762000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb775e000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7603000) /lib/ld-linux.so.2 …

1
Debian / Ubuntu'da iki glibc kurulumu
Aynı makineye iki farklı glibc sürümü kurmak ve kullanmak mümkün mü? Bir sürüm yalnızca eski glibc ikili dosyalarına dayanan eski yazılımı çalıştırmak için kullanılır? Bunu, /opt/old-glibckorkunç yönetmek yerine , paket yöneticisinin yardımıyla (bu paketi yüklemek ve bağımlılıkları gibi) yapmak mümkün müdür?

3
Kütüphanenin yolunda olup olmadığını öğrenin
Bir kütüphanenin bir program tarafından kurulmuş ve kullanılabilir olup olmadığını test etmek istediğimi varsayarsak. ldconfig -p | grep mylibSistemde yüklü olup olmadığını öğrenmek için kullanabilirim . ama kütüphane sadece ayar yoluyla biliniyorsa LD_LIBRARY_PATH? Bu durumda, program kütüphaneyi bulabilir, ancak bulamaz ldconfig. Kütüphanenin birleştirilmiş bağlayıcı yolunda olup olmadığını nasıl kontrol edebilirim …


2
Kendi ld.so.cache dosyamı kullanabilir miyim?
ldconfig iki ilginç seçeneği vardır: -f conf Use conf instead of /etc/ld.so.conf. -C cache Use cache instead of /etc/ld.so.cache. /etc/ld.so.confKendi ana dizinime kopyalamayı denedim ve yerel kütüphanelerim /home/syockit/local/usr/libgibi yolları içerecek şekilde düzenledim . ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache ve daha sonra kütüphanelerin önbelleğe alındığını doğrulamak için, ldconfig -f /home/syockit/ld.so.conf -C …

1
Linux'un dinamik bağlayıcısının yolları aradığı sıra nedir?
Bu bir kopya değil, çünkü bu kullandığımda fark ettiğim bir tuhaflık ile uğraşıyor /etc/ld.so.conf. Dinamik bağlayıcının kitaplıkları aradığı yolları almak için komutu çalıştırıyorum ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g". Ne zaman /etc/ld.so.confo listelenmiş yolları vardır. Önceki komuttan çıktı /lib /usr/lib /libÖnce ve sonra aradığını düşündüm /usr/lib. Ben …

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.