2009-06-25 16 views
6

Özel bir Android resminde bir ön kurulum ikili yüklemeye çalışıyorum. Ben make system_image binary_name çalıştırırsanız Yani, ikili dosya sistemi görüntüde /bin/ kopyalanırAndroid'de önceden oluşturulmuş bir binary kurulumu: "bulunamadı"

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_SRC_FILES := binary_name 
LOCAL_MODULE := binary_name 
LOCAL_MODULE_CLASS := EXECUTABLES 
include $(BUILD_PREBUILT) 

: Bunun için ben buna benzer bir Android.mk dosya ile prebuilt/android-arm/ yeni dizine kopyaladıktan. Ve eğer öykünücüyü çalıştırırsam, ikili dosyayı /system/bin'da görebilirim. İzinler, diğer çalıştırılabilirler (-rwxr-xr-x) ile aynıdır ve file'a göre, bu bir ARM ikilidir (ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped). Ben emülatörü üzerinde çalıştırdığınızda

Ama, diyor: Ben straced ve bu görebildiğim budur

# binary_name 
binary_name: not found 

:

# strace binary_name 
execve("/system/bin/binary_name", ["binary_name"], [/* 9 vars */]) = -1 ENOENT (No such file or directory) 
write(2, "strace: exec", 12strace: exec)   = 12 
write(2, ": ", 2:)      = 2 
write(2, "No such file or directory", 25No such file or directory) = 25 
write(2, "\n", 1 
)      = 1 
io_submit(1, -1344063348, {...} <unfinished ... exit status 1> 

Ama dosya var ve strace onu bulabilir.

Neler olabileceği hakkında bir fikrin var mı?

GÜNCELLEME: Kristof söylediği gibi bu dinamik bağlama bir sorun muhtemelen, ama Android ARM için ldd yok ... Belki gerekli dinamik kütüphaneleri bazı bulunamaz

cevap

7

.

deneyin 'ldd binary_name'

tüm kütüphaneler bulunabilir eğer çıktı böyle küçük görünmelidir. Eksik kayıtlar açıkça işaretlenmelidir.

linux-gate.so.1 => (0xb7fbf000) 
libcap.so.2 => /lib/libcap.so.2 (0xb7fa7000) 
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7fa3000) 
libncursesw.so.5 => /lib/libncursesw.so.5 (0xb7f64000) 
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7f3e000) 
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7dde000) 
libattr.so.1 => /lib/libattr.so.1 (0xb7dd9000) 
/lib/ld-linux.so.2 (0xb7fc0000) 
+0

Teşekkürler, muhtemelen doğru yoldaysınız, Android görüntüsünde ldd'ye nasıl sahip olabilirim biliyor musunuz? –

+4

Çapraz derleyici araç zincirinizin bir tane olabilir. Gcc'inizin 'arm-android-gcc' olduğu varsayılarak, ana sisteminizde 'arm-android-ldd' seçeneğini deneyin. Ayrıca, ana sisteminizde 'readelf -d binary_name' deneyebilirsiniz. Her ikisi de size gerekli dinamik kütüphanelerin bir listesini vermelidir, ancak listeyi manuel olarak doğrulamanız gerekir. –

+0

Onaylandı, paylaşılan kütüphanelerle ilgili bir şey, bunlardan biri yerleşik görüntüde yer almıyor. Kendimi bilmiyordum, bu harika :) Teşekkürler! –

İlgili konular