我試圖在自定義Android映像中安裝預編譯二進制文件。在Android上安裝預構建二進制文件:「未找到」
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := binary_name
LOCAL_MODULE := binary_name
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_PREBUILT)
所以,如果我跑make system_image binary_name
,二進制文件系統映像複製到/bin/
:對,我已經與Android.mk
文件與此類似它複製到一個新的目錄中prebuilt/android-arm/
。如果我運行模擬器,我可以在/system/bin
中看到二進制文件。權限與其他可執行文件(-rwxr-xr-x
)相同,根據file
,這是一個ARM二進制文件(ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
)。
但是,當我在模擬器上運行它,它說:
# binary_name
binary_name: not found
我已經straced它,這是我所看到的:
# 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>
但文件是存在的,並且使用strace能夠找到它。
任何想法會發生什麼?
UPDATE:由於克里斯托夫說,這可能是動態鏈接的問題,但我沒有LDD的Android ARM ...
謝謝你,你可能是在正確的方式,你知道我怎麼能在Android圖像ldd? – 2009-06-25 11:20:28