私は、それがこれらの手順に従うことにより、Androidのオペレーティングシステム上で実行するためにELF実行ファイルをAndroid用にクロスコンパイルするにはどうすればよいですか?
/*test.c file*/
#include <stdio.h>
int
main(int argc, char **argv)
{
printf("Android Test Application.\n");
return 0;
}
$アームなし - のlinux-gnueabi-gccの-oテストtest.cのを以下のサンプルCコードを用意しました-Wall
バイナリファイル--test--をターゲットデバイス "/ system/bin"ディレクトリにコピーしました。
私は、ターゲットシステム上のクロスコンパイルされたバイナリの実行を試み
は、私はこのエラーを取得しています$ PWD
/システム/ binに
$ ./test
bash:./test:そのようなファイルまたはディレクトリはありません。
$ ls -al | "/システム/ binに" ディレクトリに既にある--test--バイナリファイルであるがgrepの試験
-rwxr-XR-X 1 0 0 8384 2011年12月22日午後03時26試験
。
マイクロスコンパイラである
$アームなし - のlinux-gnueabi-gccの--version
アームなし - のlinux-gnueabi-gccの(のSourcery G ++ Liteの2009q1-203)4.3 .3 著作権(C)2008フリーソフトウェア財団、Inc.これはフリーソフトウェア です。コピー条件についてはソースを参照してください。いいえ 保証はありません。商品性や特定の適合性に関してさえも、 目的には適していません。
なぜこのエラーが発生しますか?
のbash:./test:そのようなファイルやディレクトリはありません
は/欠落し_could_ひどくリンクされたダイナミックローダーまたはそのようなものです。ローダが 'readelf'で何をしているのかを調べてください。デバイス上で 'ldd。/ test'を試してみてください。また、exeファイルを静的にリンクして、それが少なくとも動作するかどうかを確認してください。 – Mat
'ls -al |を実行しています。私の電話で「grep date」を実行すると、権限として 'lrwxrwxrwx'が生成されます。おそらくそのパーミッションの問題? –
現在のダイナミックローダーを検出するにはどうすればよいですか? readelfユーティリティを使ってこれを知ることはできますか? – albin