1
6
7.3.5 Các công cụ cho thư viện
Công cụ nm
Lệnh nm liệt kê toàn bộ các tên hàm (symbol) được mã hoá trong file đối tượng
(object) và nhị phân (binary). Lệnh nm sử dụng cú pháp sau:
nm [options] file
Lênh nm liệt kê những tên hàm chứa trong file. Bảng dưới liệt kê các tuỳ chọn của lệnh
nm:
Tuỳ chọn
Miêu tả
-C| -demangle
Chuyển tên ký tự vào tên mức người dùng để cho dễ đọc.
-s|-print-armap
Khi sử dụng các file lưu trữ (phần mở rộng là “.a”), in ra các
chỉ số của module chứa hàm đó.
-u| -undefined-only
Chỉ đưa ra các hàm không được định nghĩa trong file này, tức
là các hàm được định nghĩa ở một file khác.
- l | -line-numbers
Sử dụng thông tin gỡ rối để in ra số dòng nơi hàm được định
nghĩa.
Các tuỳ chọn của lệnh nm
Công cụ ar
Lệnh ar sử dụng cú pháp sau:
ar {dmpqrtx} [thành viên] file
Lệnh ar tạo, chỉnh sửa và trích các file lưu trữ. Nó thường được sử dụng để tạo các thư
viện tĩnh- những file mà chứa một hoặc nhiều file đối tượng chứa các chương trình con
thường được sử dụng (subrountine) ở định dạng tiền biên dịch (precompiled format), lệnh
ar cũng tạo và duy trì một bảng mà tham chiếu qua tên ký tự tới các thành viên mà trong đó
chúng được định nghĩa. Chi tiết của lệnh này đã được trình bày trong chương trước.
Công cụ idd
Lệnh nm liệt kê các hàm được định nghĩa trong một file đối tượng, nhưng trừ khi ta biết
những gì thư viện định nghĩa những hàm nào. Lệnh idd hữu ích hơn nhiều. idd liệt kê các
thư viện được chia sẻ mà một chương trình yêu cầu để mà chạy. Cú pháp của nó là:
idd [options] file
Lệnh idd in ra tên của thư viện chia sẻ mà file này sử dụng. Ví dụ: chương trình thư
“client mutt” cần 5 thư viện chia sẻ, như được minh hoạ sau đây:
$ idd /usr/bin/mutt
libnsl.so.1 => /lib/libns1.so.1 (0x40019000)
libslang.so.1 => /usr/lib/libslang.so.1 (0x4002e000)
libm.so.6 => /lib/libm/so.6 (0x40072000)
libc.so.6 => /lib/libc.so.6 (0x4008f000)
/lib/id-linux.so.2 => /lib/id-Linux.so.2 (0x4000000)
Tìm hiểu lệnh idconfig
Lệnh idconfig sử dụng cú pháp sau:
ldconfig [tuỳ chọn] [libs]