GNU development Tools - nm
- What is "nm" for ?
- list symbols from object files.
»
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 libpthread và librt ?
Câu lệnh mn được dùng ở đây để xem xét sự khác biệt của 2 object files libpthread.a và librt.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 libpthread và librt.
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
nmlà công cụ để liệt kê cácsymboltrong thư viện (hayobject file)Ạ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ỉ ?
Nếu thông suốt hết thì chẳng phải bối rối rồi.