title: Installing a prebuilt binary on Android: "not found"
body: <p>I'm trying to install a prebuilt binary in a custom Android image. For that I have copied it to a new directory in <code>prebuilt/android-arm/</code> with an <code>Android.mk</code> file similar to this one:</p>
  
  <pre><code>LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  
  LOCAL_SRC_FILES := binary_name
  LOCAL_MODULE := binary_name
  LOCAL_MODULE_CLASS := EXECUTABLES
  include $(BUILD_PREBUILT)
  </code></pre>
  
  <p>So if I run <code>make system_image binary_name</code>, the binary file is copied to <code>/bin/</code> in system image. And if I run the emulator I can see the binary file in <code>/system/bin</code>. The permissions are the same as the other executables (<code>-rwxr-xr-x</code>) and, according to <code>file</code>, this is an ARM binary (<code>ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped</code>).</p>
  
  <p>But when I run it on the emulator, it says:</p>
  
  <pre><code># binary_name
  binary_name: not found
  </code></pre>
  
  <p>I have straced it and this is what I can see:</p>
  
  <pre><code># 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, {...} &lt;unfinished ... exit status 1&gt;
  </code></pre>
  
  <p>But the file is there, and strace is able to find it.</p>
  
  <p>Any idea of what can be happening?</p>
  
  <p><strong>UPDATE</strong>: As Kristof says, this is probably a problem of dynamic linking, but I don't have ldd for Android ARM...</p>