Lấy danh sách các chức năng trong một thư viện chia sẻ?


14

Làm cách nào tôi có thể nhận được danh sách các hàm được xác định trong thư viện đối tượng dùng chung hoặc tìm hiểu xem một hàm cụ thể có được xác định trong một không?

Câu trả lời:


15

Có các định dạng tệp thực thi khác nhau trên hệ thống * nix. a.out là một định dạng phổ biến vài năm trước và ngày nay ELF của nó trên tất cả các hệ thống chính gần đó.

ELF bao gồm một tiêu đề mô tả từng phần dữ liệu tệp.

Phần bạn đang tìm kiếm là bảng ký hiệu, trong đó mỗi ký hiệu (hàm, biến) được ánh xạ tới địa chỉ của nó.

Thư viện chia sẻ giữ các biểu tượng toàn cầu của họ trong một phần được gọi là .dynsym

Những gì bạn đang tìm kiếm là biểu tượng của hàm loại và ràng buộc toàn cầu trong phần này.

readelf --syms ./libfoo.so sẽ cung cấp cho bạn một đầu ra của các biểu tượng.

Trên Solaris và FreeBSD cũng elfdumpcó sẵn.

objdumpcũng hiển thị rất nhiều thông tin về tệp đối tượng của bạn và bạn có thể chỉ định một phần bằng cách sử dụng công -jtắc.


13

Sử dụng bước sóng với công tắc -D (động):

$ 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
...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.