This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

GNU development Tools - nm

- What is "nm" for ? - list symbols from object files.
Added by bronzeboyvn about 3 years ago  »  Votes: 1/1

Hiện nay lập trình multi-threading trên Linux, người ta thường sử dụng chuẩn POSIX. Khi đọc các trang man của POSIX functions, ta được khuyên rằng phải biên dịch code với tham số "-lpthread" hoặc "-lrt". Tôi viết thử một chương trình đơn giản khi chạy process gồm có 2 threads. Và code được biên dịch tham số "-lpthread" hoặc "-lrt" đều ổn.
Vậy có gì khác biệt giữa libpthreadlibrt ?
Câu lệnh mn được dùng ở đây để xem xét sự khác biệt của 2 object files libpthread.alibrt.a. Ít nhất là ta cần xem 2 thư viện này cung cấp các API có hòan toàn giống nhau không.

nm -g /usr/lib/libpthread.a
nm -g /usr/lib/librt.a

So sánh 2 kết quả từ 2 câu lệnh ta thấy: libthread không hỗ trợ asynchronous I/O functions, trong khi librt thì có; ngược lại librt không hỗ trợ POSIX semaphore, trong khi libthread thì có. Nhận thấy điểm khác biệt này, nó phần nào giúp tôi thóat khỏi sự bối rồi khi phải phân biệt libpthreadlibrt.
Hai thư viện này có rất nhiều API mà tôi chưa bao giờ đụng đến, nên chắc rằng còn nhiều điểm khác biệt giữa chúng. Rất hy vọng được các bạn chỉ bảo thêm về vấn đề này!


Comments

Added by about 3 years ago

nm là công cụ để liệt kê các symbol trong thư viện (hay object file)

Added by about 3 years ago

Ạc! Một cái là 1003.1c còn một cái 1003.1b thì bối rối cái gì nhỉ ?

Added by bronzeboyvn about 3 years ago

Nếu thông suốt hết thì chẳng phải bối rối rồi.