Neden nm /lib/i386-linux-gnu/libc.so.6 için sembol göstermiyor?


31

Ben sembollerin sayısını görmek için beklenen libc.so.6 dahil dosyanın printf . Kullandığım nm onları bulmak için aracı ancak libc.so.6 hiçbir sembol olmadığını söyledi.

Yanıtlar:


54

Muhtemelen normal sembollerini elimden almış ve geriye kalan, alabileceğiniz dinamik semboller nm -D.


11

@PSkocik bunu yanıtladı. Sadece daha fazla ayrıntı eklemek istiyorum. ELF'de iki tür sembol bölümü vardır: .symtabve .dynsym(ayrıntılar için bkz. Linux Standart Temel Çekirdek Belirtimi, aka LSB_5.0.0 ). .symtabpaylaşılan libin kendisinin bağlanma adımı içindir. Bağlantı tamamlandıktan sonra, artık .symtabbölüme ihtiyaç duyulmaz. Bu .dynsymbölüm çalışma zamanında dinamik linker tarafından aranması gereken önemli semboller içerir. nmvarsayılan olarak sadece .symtabbölüme semboller döker .

LSB_5.0.0 Kısım 10.2.2.1, “ELF Kısım Tipleri”, uygun bir paylaşılan kütüphanenin her ikisine de sahip olması ya .symtabda .dynsymolmaması gerektiğini söyler . ABI kütüphanesinin bir parçası olarak, libc, .symtabşartlara uygun olması için elimden alınır .


0

Paylaşılan bir nesne veya normal bir ASCII dosyası olup olmadığını öğrenin. Paylaşılan bir nesne ise "ELF 32-bit LSB paylaşılan nesnesi" görmelisiniz.

file /lib/i386-linux-gnu/libc.so.6

libc.so.6açıkçası paylaşılan bir nesnedir.
Gilles 'SO- kötülük'

Asla Linux ortamında olduğunu varsaymıyorum. Birisinin kök dizinlerine dokunabileceğini düşünerek. Evet, adı belli ki bir paylaşım nesnesi. Ve, doğrulamak için zarar vermez; Beklenen çıktıyı alamadığınızda.
jncc99
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.