2012-01-31 4 views
2

Я только что построил свое ядро ​​андроида. Я написал программу hello world и скомпилировал с помощью arm-linux-gnueabi-gcc. Я использовал adb push, чтобы поместить исполняемый файл в/data/local эмулируемого ядра. Я смог ssh в эмулированное ядро, используя adb shell. Когда я подключаюсь к/data/local и ls в каталоге, я могу видеть a.out, который я использовал с помощью adb push. Когда я делаю #./A.out, я получаю сообщение об ошибке ./a.out: не найден.Hello World Android-программа

Может ли кто-нибудь помочь мне в этом.

+0

Каков результат 'ldd./a.out'? – sarnold

+0

Проверьте разрешения для этого каталога –

+0

Права доступа к статьям! – psteelk

ответ

0

Я добавил параметр -статический параметр во время компиляции. arm-linux-gnueabi-gcc -static

0

Я думаю, это недостающая проблема библиотеки. Я встретил эту проблему, прежде чем мое исправление ниже:

[email protected]:~# ./a.out 
-sh: ./a.out: not found 
[email protected]:~# ls /lib /root 
/lib: 
libc.so.6 

/root: 
a.out 
[email protected]:~# 

Затем проверьте, какие разделяемые библиотеки необходимы приложением:

[email protected]:/opt/nfs/root$ arm-linux-readelf a.out -a |grep lib 
    [Requesting program interpreter: /lib/ld-linux.so.3] 
    0x00000001 (NEEDED)      Shared library: [libc.so.6] 
... ... 

На выходе мы можем подтвердить, что ld-linux.so.3 отсутствует, поэтому скопируйте ld-linux.so.3 в целевой каталог файловой системы/lib:

[email protected]:~# ./a.out 
test 
[email protected]:~# ls /lib /root 
/lib: 
ld-linux.so.3 libc.so.6 

/root: 
a.out 
[email protected]:~#