2012-01-31 20 views
2

私は金魚のアンドロイドカーネルを作りました。私はhello worldプログラムを書いて、arm-linux-gnueabi-gccを使ってコンパイルしました。私は、エミュレートされたカーネルの/ data/localに実行ファイルを置くためにadb pushを使いました。私はadbシェルを使ってエミュレートされたカーネルにsshできるようになりました。私が/ data/localにcdしてディレクトリを見ると、adb pushを使って入れたa.outを見ることができます。 #。/ a.outを実行すると、エラーが発生します./a.out:not found。Hello World Androidプログラム

これを手伝ってくれる人がいますか?

+0

'ldd。/ a.out'の出力は何ですか? – sarnold

+0

そのディレクトリのアクセス許可を確認してください –

+0

権限は問題ありません! – psteelk

答えて

0

コンパイル作業中に-staticオプションを追加しました。 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]:~#