GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 163

1
6

7.3.5 Các công c cho thư vin

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 chn

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
chn ca lnh 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 hiu lnh idconfig

Lệnh idconfig sử dụng cú pháp sau:

ldconfig [tu chn] [libs]