2012-01-31 5 views
2

Je viens de construire mon noyau androïde de poisson rouge. J'ai écrit un programme hello world et compilé en utilisant arm-linux-gnueabi-gcc. J'ai utilisé adb push pour mettre l'exécutable dans/data/local du noyau émulé. J'ai été capable de ssh dans le noyau émulé en utilisant adb shell. Quand je cd dans/data/local et ls le répertoire, je suis capable de voir le a.out que j'avais mis en utilisant le push adb. Quand je fais #./A.out, j'obtiens l'erreur ./a.out: non trouvée.Hello World Programme Android

Quelqu'un peut-il m'aider à ce sujet.

+0

Quelle est la sortie de 'ldd./a.out'? – sarnold

+0

Vérifiez les autorisations pour ce répertoire –

+0

Autorisations semble être bien! – psteelk

Répondre

0

J'ai ajouté l'option -static lors de la compilation. arm-linux-gnueabi-gcc -static

0

Je suppose que c'est un problème de bibliothèque manquant. Je l'ai rencontré ce problème avant, ma solution est ci-dessous:

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

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

vérifier ensuite que la bibliothèque partagée est nécessaire par l'application:

[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] 
... ... 

par la sortie, nous pouvons confirmer que le ld-linux.so.3 manque, Copiez donc ld-linux.so.3 pour cibler le répertoire filesystem/lib:

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

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