Cách in danh sách các ký hiệu được xuất từ ​​thư viện động


121

Vì vậy, tôi đã cố gắng để các thư viện động hoạt động trong dự án XCode của tôi trên Mac OS X. Cho đến nay, không có gì đáng vui mừng.

Tôi có thể tải tệp dylib, nhưng khi tôi gọi dlsym để lấy con trỏ hàm, nó trả về 0 và dlerror cho biết không tìm thấy biểu tượng.

Vì vậy, tôi tự hỏi nếu có một cách đơn giản để liệt kê các ký hiệu được xuất từ ​​tệp dylib. Bất cứ ý tưởng sẽ là tuyệt vời.

Câu trả lời:


152

người đàn ông 1 nm

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

Ví dụ:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib

2
Trong OS X Leopard (10.5, vâng, tôi biết ...) bạn nên sử dụng nm -gu, tức là -utùy chọn là chữ thường.
Laryx Decidua

4
man 1 nm là khép kín và sẽ tiếp tục hoạt động khi dòng lệnh thay đổi: p
MK.

9
@MK. man 1 nmliệt kê rất nhiều thứ người ta có thể làm với nm. Một lần nữa, đó là một tài nguyên bên ngoài mà người ta có thể đọc qua để tìm ra giải pháp, nhưng không phải là giải pháp cho “một cách đơn giản để liệt kê các ký hiệu được xuất từ ​​tệp dylib” . “ nm -gU ….dylib” Là, tuy nhiên.
Slipp D. Thompson

59

Sử dụng otool :

otool -TV your.dylib

HOẶC LÀ

nm -g your.dylib

4
Trên macOS mới, otool -T sẽ hiển thị otool: -T functionality obsoletesử dụng objdump -t
joseph.smeng

Trong khi đó là sự thật mà otool -Tbáo cáo functionality obsoletetrong phiên bản mới hơn OS X, nó cũng đúng là (cho các thư viện động) objdump -tsẽ báo cáoThe file was not recognized as a valid object file.
TML

14

Sử dụng nm -a your.dylib

Nó sẽ in tất cả các ký hiệu bao gồm cả hình cầu


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.