Saya berharap untuk melihat jumlah simbol dalam file libc.so.6 termasuk printf . Saya menggunakan alat nm untuk menemukan mereka, namun dikatakan tidak ada simbol di libc.so.6.
sumber
Saya berharap untuk melihat jumlah simbol dalam file libc.so.6 termasuk printf . Saya menggunakan alat nm untuk menemukan mereka, namun dikatakan tidak ada simbol di libc.so.6.
Mungkin simbol-simbol regulernya dilucuti dan yang tersisa adalah simbol dinamisnya, yang bisa Anda dapatkan nm -D
.
@PSkocik menjawab ini. Saya hanya ingin menambahkan lebih detail. Ada dua jenis bagian simbol di ELF: .symtab
dan .dynsym
(lihat Spesifikasi Inti Basis Standar Linux, alias LSB_5.0.0 , untuk detailnya). .symtab
adalah untuk menghubungkan langkah lib bersama itu sendiri. Setelah tautan selesai, .symtab
bagian itu tidak diperlukan lagi. The .dynsym
bagian berisi simbol-simbol penting yang seharusnya dicari oleh linker dinamis pada saat dijalankan. nm
secara default hanya membuang simbol di .symtab
bagian ini.
LSB_5.0.0 Bagian 10.2.2.1, “Jenis Bagian ELF”, mengatakan lib bersama yang sesuai harus memiliki salah satu .symtab
atau .dynsym
keduanya. Sebagai bagian dari perpustakaan ABI, libc dilucuti dari yang .symtab
akan sesuai spesifikasi.
Cari tahu apakah itu objek bersama, atau, file ASCII biasa. Jika itu adalah objek bersama Anda akan melihat "ELF 32-bit LSB shared object,"
file /lib/i386-linux-gnu/libc.so.6
libc.so.6
jelas merupakan objek bersama.