新しいラップトップと最新のアンドロイドNDKに移動し、アンドロイドアプリにバイナリを再コンパイルし、実行中に「実行ファイルが見つかりません」という例外が発生しました。私はファイルが存在することを確認して、予想されるパスにいます。Androidの実行ファイルが間違ったインタプリタで表示されますか?
私は、ファイルを解析して、次のように持ってその後:
$file ./build_pie/my_file
./build_pie/my_file: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /usr/lib/libc.so.1, not stripped
その後、私は実行可能ファイルの以前のバージョンをチェックしましたし、それがあった:
$file /tmp/f4_old/my_file
/tmp/f4_old/my_file: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, not stripped
私は間違っインタプリタがあると信じて理由。どうすれば修正できますか?
PS。ここで
が設定からいくつかの行は、次のとおりです。
... // override PATH and SYSROOT to android NDK (standalone toolchain)
export CFLAGS="-I$SRC/libftdi1.0-2-android-arm-lollipop/include -I$SRC/libusb1.0-2-android-arm-lollipop/include -fPIE"
export CPPLAGS="$CPPFLAGS -fPIE"
export CXXLAGS="$CXXFLAGS -fPIE"
export LDFLAGS="$LDFLAGS -lusb-1.0 -lusb -lftdi -L$SRC/libftdi1.0-2-android-arm-lollipop/lib -L$SRC/libusb1.0-2-android-arm-lollipop/lib -L$SRC/libusb-android-arm-lollipop/lib -static -fPIE -pie"
../configure --build=x86-unknown-linux-gnu --host=arm-linux-androideabi --target=arm-linux-androideabi --verbose
これはまさに私が使ったものです。 – 4ntoine
ああ、大丈夫です。あなたの質問からそれを推測する方法はありませんでした。スタンドアロンのツールチェーンを使用する場合は、リンカーパスを手動で指定する必要はありません。構築しているプロジェクトが間違った経路に明示的に設定している可能性がありますか? autoconfやmakefileのどこか?あなたはそれの周りで働いたので多分あなたは気にしません。あなたが実際のバグを乗り越えていないことを確認しようとしているだけです。 –