2013-03-20 28 views
18

Tôi có libTest.so không tải trên một số thiết bị. logcat là hoàn toàn vô dụng. Sử dụng arm-linux-androideabi-readelf.exe -d libTest.so Tôi có thể xem tất cả các thư yêu cầu mà libTest.so cần. Tôi kéo tất cả vào, vào cùng một thư mục trên máy tính cục bộ của tôi.ldd tương đương trên android

Làm cách nào để tìm ra biểu tượng nào bị thiếu và trong thư viện nào? Tôi chỉ có bộ công cụ tiêu chuẩn từ NDK (nm, readelf, objdump etc). Công cụ nào và làm thế nào tôi có thể sử dụng để nó phân tích libTest.so của tôi và tất cả libs phụ thuộc cũng như và cho tôi biết biểu tượng nào ngăn không cho lib của tôi tải trên thiết bị đích.

Trả lời

18

Nhờ nhà phát triển Android. Yêu cầu tính năng của tôi đã được triển khai :) Bây giờ chúng tôi có ndk-depends, một công cụ cho phép khắc phục sự cố phụ thuộc.

Chỉnh sửa: mặc dù nó không có độ phân giải biểu tượng đầy đủ. Ví dụ. nếu bạn xây dựng dựa trên Android-14 và cố gắng sử dụng các phương pháp không tồn tại trong Android cũ, thì công cụ này sẽ không liệt kê các biểu tượng bị thiếu. Phần này được để lại như một TODO trong ndk-phụ thuộc.

0

Bạn có thể làm một cái gì đó như:

$ /lib/ld-linux.so.2 --list filename 

Điều này là do ldd chỉ là một kịch bản shell mà hoạt động như một wrapper quanh nạp năng động. Tên của trình tải động, tức là, ld- {version}. Cũng có thể khác nhau.

+2

Android dường như sử dụng '/ system/bin/linker' và không'/lib/ld-linux.so'. Nhưng dù sao tôi không thể lấy linker để xuất ra bất cứ điều gì –

+7

Tôi chỉ nhận được 'Segmentation fault' khi gọi'/system/bin/linker' trực tiếp, cho dù tôi dùng đối số nào đi chăng nữa! – markshep

9

Tôi vừa chạy vào cùng một vấn đề và không muốn cài đặt ndk cũng như không lấy toàn bộ cây nguồn để tìm hiểu xem bạn đã bị bỏ rơi ra sao.

readelf --dynamic filename | grep NEEDED 

hiển thị lib động cho nhị phân elf.

Các vấn đề liên quan