รับรายการฟังก์ชั่นในไลบรารีที่แชร์หรือไม่


14

ฉันจะรับรายการฟังก์ชั่นที่กำหนดไว้ในไลบรารีวัตถุที่ใช้ร่วมกันหรือค้นหาว่ามีการกำหนดฟังก์ชั่นเฉพาะในหนึ่งได้อย่างไร?

คำตอบ:


15

มีรูปแบบไฟล์ปฏิบัติการที่แตกต่างกันในระบบ * nix a.out เป็นรูปแบบที่พบได้ทั่วไปเมื่อหลายปีก่อนและวันนี้เอลฟ์เป็นระบบหลักที่อยู่ใกล้เคียงทั้งหมด

ELF ประกอบด้วยส่วนหัวที่อธิบายแต่ละส่วนข้อมูลไฟล์

ส่วนที่คุณกำลังมองหาคือตารางสัญลักษณ์ที่แต่ละสัญลักษณ์ (ฟังก์ชันตัวแปร) ถูกแมปไปยังที่อยู่ของมัน

ไลบรารีที่แบ่งใช้เก็บสัญลักษณ์โกลบอลไว้ในส่วนที่เรียกว่า. dynsym

สิ่งที่คุณกำลังมองหาคือสัญลักษณ์ของฟังก์ชั่นประเภทและการเชื่อมโยงทั่วโลกในส่วนนี้

readelf --syms ./libfoo.so จะให้ผลลัพธ์ของสัญลักษณ์

บน Solaris และ FreeBSD theres ก็elfdumpมีให้เช่นกัน

objdumpแสดงข้อมูลจำนวนมากเกี่ยวกับอ็อบเจ็กต์ไฟล์ของคุณและคุณสามารถระบุส่วนโดยใช้-jสวิตช์


13

ใช้ nm พร้อมสวิตช์ -D (ไดนามิก):

$ nm -D /usr/lib/libpng.so
00000000 A PNG12_0
     w _Jv_RegisterClasses
     w __cxa_finalize
     U __fprintf_chk
     w __gmon_start__
     U __longjmp_chk
     U __memcpy_chk
     U __snprintf_chk
     U __stack_chk_fail
     U _setjmp
     U abort
     U crc32
     U deflate
     U deflateEnd
     U deflateInit2_
     U deflateReset
     U fflush
     U fread
     U free
     U fwrite
     U gmtime
     U inflate
     U inflateEnd
     U inflateInit_
     U inflateReset
     U malloc
     U memcmp
     U memcpy
     U memset
00003fd0 T png_access_version_number
00016ef0 T png_build_grayscale_palette
00004810 T png_check_sig
0001d2d0 T png_chunk_error
0001d070 T png_chunk_warning
00013390 T png_convert_from_struct_tm
00014a90 T png_convert_from_time_t
000048d0 T png_convert_to_rfc1123
000051b0 T png_create_info_struct
00013040 T png_create_read_struct
00012c20 T png_create_read_struct_2
00014a40 T png_create_write_struct
00014710 T png_create_write_struct_2
00004230 T png_data_freer
00005140 T png_destroy_info_struct
00010eb0 T png_destroy_read_struct
00013da0 T png_destroy_write_struct
0001d0f0 T png_error
0001ca10 T png_free
00004a50 T png_free_data
0001c9d0 T png_free_default
...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.