Có cách nào lập trình (gọi hệ thống không?) Để liệt kê phụ thuộc thư viện được chia sẻ trên Linux? Thay vì sử dụng ldd
...Cách lập trình để liệt kê phụ thuộc thư viện được chia sẻ trên linux
Trả lời
Đặt biến môi trường LD_TRACE_LOADED_OBJECTS thành chuỗi không trống và chạy nhị phân của bạn. Hãy xem trang this người đàn ông.
LD_TRACE_LOADED_OBJECTS
(ELF only) If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd(1), instead of running normally.
Điều gì sẽ xảy ra nếu tôi muốn kiểm tra sự phụ thuộc của một thư viện được chia sẻ chứ không phải nhị phân? Trong trường hợp này, tôi không thể chạy thư viện được chia sẻ ... Cảm ơn. – flyingbin
Bạn có thể chạy ld.so trên thư viện được chia sẻ theo cách này: /lib/ld-2.11.2.so --list /lib/libc.so.6 – ks1322
readelf -Wa lib.so|grep NEEDED
readelf -d lib.so hiệu quả hơn nhiều, vì nó không t cần giải mã * tất cả * thông tin. Ngoài ra, điều này không cung cấp danh sách phụ thuộc hoàn chỉnh (transitive) mà 'ldd' cung cấp; chỉ những cái trực tiếp. –
Đây là kịch bản bash đơn giản tôi sử dụng bản thân mình trên Fedora, nó dựa trên find-đòi hỏi của gói rpm, bạn có thể nhìn vào bên trong tìm-đòi hỏi để tìm những công cụ đó trong nội bộ sử dụng.
#!/bin/bash
#
# Use rpm to recursively list dependencies of all files in a directory
#
# Syntax:
# lsdep path/to/directory
# Example:
# lsdep /usr/src/kernels/`uname -r`/
find $1 -type f -exec sh -c 'res=`echo '{}' | /usr/lib/rpm/find-requires`; [ -n "$res" ] && (echo;echo file '{}'; echo $res)' \;
Gentoo Linux có lddtree.sh http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-projects/pax-utils/lddtree.sh?revision=1.22&content-type=text%2Fplain
Bạn có thể tìm thấy nó hữu ích.
- 1. Thư viện được chia sẻ Linux C++
- 2. Tự động tải các thư viện được chia sẻ Linux?
- 3. Tách thư viện chia sẻ linux
- 4. Thư viện được chia sẻ: Phương pháp Windows vs Linux
- 5. Trộn các thư viện tĩnh và thư viện chia sẻ
- 6. Makefile cho Thư viện được chia sẻ?
- 7. Biến toàn cầu trong thư viện/dll được chia sẻ, được chia sẻ qua quá trình
- 8. Nhiều trường hợp singleton trên các thư viện được chia sẻ trên Linux
- 9. Thư viện được chia sẻ tự động và tiêu chuẩn
- 10. Cách gọi hàm từ thư viện được chia sẻ?
- 11. Liên kết các phụ thuộc của một thư viện được chia sẻ
- 12. ctypes đang tải thư viện chia sẻ c có phụ thuộc
- 13. Thực hành tốt về thư viện được chia sẻ trên Linux là gì?
- 14. Linux: Cách nhúng thông tin phiên bản vào thư viện được chia sẻ và nhị phân?
- 15. linux g ++ liên kết 64 bit mã thư viện chia sẻ với thư viện tĩnh
- 16. Thư viện được chia sẻ trên Websphere "Ưu tiên"?
- 17. Cách gỡ lỗi tải thư viện được chia sẻ
- 18. Các thư viện được chia sẻ tùy chọn
- 19. Thư viện được chia sẻ trong Go?
- 20. làm cách nào để buộc trình liên kết sử dụng thư viện được chia sẻ thay vì thư viện tĩnh?
- 21. Liên kết với thư viện được chia sẻ với CMake trên Linux
- 22. Cách chia sẻ biến trong thư viện đối tượng được chia sẻ
- 23. Làm thế nào để chia sẻ các biến toàn cầu trong một thư viện được chia sẻ (.so) trong các trường hợp của cùng một quá trình sử dụng thư viện được chia sẻ trong Linux?
- 24. Liên kết thư viện được chia sẻ bằng gcc
- 25. Chia sẻ thư viện gốc trên hai ứng dụng
- 26. Thư viện được chia sẻ C++ được gọi từ C
- 27. Cách phát hiện thư viện được chia sẻ nào được tải bởi ứng dụng Android
- 28. C++: dlclose không dỡ bỏ thư viện được chia sẻ
- 29. Làm cách nào để thay đổi tên tệp của thư viện được chia sẻ sau khi xây dựng chương trình phụ thuộc vào nó?
- 30. Khi nào thư viện được chia sẻ được coi là "giống nhau" cho mục đích chia sẻ?
hệ thống ("ldd myfile") ;? –
chỉ là một câu trả lời chung trước khi một thực tế đến: bạn luôn có thể kiểm tra nguồn của chương trình (trong trường hợp này 'ldd') để xem những gì nó làm. –