1

Android.mk で「include $(BUILD_EXECUTABLE)」コマンドを使用して実行可能ファイルを作成しました。私の要件は、上記で生成された実行可能ファイルを abd シェルで実行することです。

私は試した:

以下は、ndk-build コマンドを使用してコンパイルされた私の C コードです。

#include <stdio.h>
int main()
{
    printf("\n\nHello World\n\n");
    return 0;
}

以下は私のAndroid.mkファイルの内容です:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := HelloExecutable
LOCAL_SRC_FILES := hello.c
include $(BUILD_EXECUTABLE)

コマンドndk-build を実行すると、次のファイルが生成されます。

projectRoot->libs-> HelloExecutable

私の仕事は、上記で生成されたファイルを adb シェルで実行することです。したがって、最初に次のコマンドを使用してファイルをSDカードにプッシュしました。

adb push ~/projectRoot->libs->HelloExecutable /sdcard/

今、私は次を使用して adb シェルに切り替えます: $adb shellコマンド (ここではエミュレーターを使用しています)。

次に、パーミッションを次のように変更します: chmod 777 /sdcard/HelloExecutable

上記のコマンドが実行されると、HelloExecutableファイルの実行権限が取得されます。

次に、現在の作業ディレクトリを sdcard に変更します。つまり、cd /sdcard/

上記のファイルを実行しようとすると、次のエラーが発生します。

# ./HelloExecutable
./HelloExecutable: permission denied

上記を実行するために、エミュレータを使用しています。誰かが上記のエラーの理由を教えてもらえますか??

視聴者の皆様におかれましては、上記の問題を解決していただきますようお願い申し上げます。あなたの答えを待っています。前もって感謝します。

4

1 に答える 1

1

SDカードがnoexecオプションでマウントされているか確認してください。ファイルを/dataなどの別のパーティションにコピーして、そこから実行してみてください。

于 2013-03-01T20:53:11.380 に答える