2013-05-28 14 views
19

ありません、私は次のように使用...アンドロイド:エラー:オープンできませんcrtbegin_dynamic.o:そのようなファイルやディレクトリは

~/Development/Android/android-ndk-r8c/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/Users/me/toolchain

それから私は、次のコードファイルを作成...

int main() 
{ 
    return 0; 
} 

I試してみました...

<toolchain>/arm-linux-androideabi-gcc test.c 

を私はまた

を試してみましたどちらも戻ってくる

...

toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory 
+0

何かが明らかにオフであるので、手動でリンクする方法はありますか? – Jackie

+1

私はexport LD = arm-linux-androideabi-ldも試しましたが、もう一度サイコロはありません。 – Jackie

答えて

18

それを簡単にするためには、単にSYSROOTを設定します。

<toolchain>/arm-linux-androideabi-g++ ~/test.c -o ~/test --sysroot=/home/user/android-ndk/platforms/android-9/arch-arm/ 
+0

ありがとうございます。--sysrootは、厄介なndk-buildラッパーのないビルドにとって、本当に必須のようです。 –

+0

大変ありがとう@BlueSilverこれを見つけ出すには多くの時間がかかります! – NandhaKumar

+0

ようこそ。それは4年前でした:) – BlueSilver

2

[OK]を...振り返る私は、Android-9コマンドあたりのための私のツールチェーンを作った

~/Development/Android/android-ndk-r8c/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/tmp/my-toolchain

私は走った...

<install>/android-ndk-r8c$ find ./ -name crtbegin_dynamic* 
.//platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-14/arch-mips/usr/lib/crtbegin_dynamic.o 
.//platforms/android-14/arch-x86/usr/lib/crtbegin_dynamic.o 
.//platforms/android-3/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-4/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-5/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-8/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-9/arch-mips/usr/lib/crtbegin_dynamic.o 
.//platforms/android-9/arch-x86/usr/lib/crtbegin_dynamic.o 

何かの理由でandroid-9の私のインストールがこのファイルを持っていないことがわかります。私はアンドロイド14のために再構築され、すべて正常に動作します。誰がこれがどのようにこのようになったか考えている?ボーンヘッドファイルは私の部分に移動しますか?

+1

これは正解ではありません。 BlueSilverの '--sysroot'は、' crtbegin_dynamic.o'の欠落を引き起こしたコマンドラインから欠けていたものです。 – jww

10

/arm-linux-androideabi-gcc test.c

あなたはこの1つでsysrootを逃しています。


/arm-linux-androideabi-gcc --sysroot=/sysroot test.c

この1、sysrootは間違っています。

$ echo $PATH 
/opt/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin: 
/opt/android-sdk-macosx/tools/:/opt/android-sdk-macosx/platform-tools/:/opt/local/bin: 
/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin 
$ echo $LD 
arm-linux-androideabi-ld 

おそらく、ツールチェーン内のすべてのツールをエクスポートする必要があります:あなたはまた、(すべてのツールがパスにする必要があります)LDをエクスポートする必要が

--sysroot=/opt/android-ndk-r9/platforms/android-18/arch-arm 

:それは類似したにもahould:

export CPP=arm-linux-androideabi-cpp 
export CC=arm-linux-androideabi-gcc 
export CXX=arm-linux-androideabi-g++ 
export LD=arm-linux-androideabi-ld 
export AS=arm-linux-androideabi-as 
export AR=arm-linux-androideabi-ar 
export RANLIB=arm-linux-androideabi-ranlib 

あなたがAutoconfのプロジェクトで作業している場合、これらを追加します。

$ echo $ANDROID_SYSROOT 
/opt/android-ndk-r9/platforms/android-18/arch-arm 
export CPPFLAGS="--sysroot=$ANDROID_SYSROOT" 
export CFLAGS="--sysroot=$ANDROID_SYSROOT" 
export CXXFLAGS="--sysroot=$ANDROID_SYSROOT" 
0

これは私にとってはうまくいきました。同じ問題でこの問題に遭遇しました。私はNDKでgcc-4.8ツールチェーンを構築しようとしていて、同じ問題に遭遇しました。私の状況はちょっと違いますが、私はAndroidデバイスでビルドしています。つまり、私はBionicライブラリlibc.solibdl.so/system/libに持っています。メイクファイルには、私はgcc-4.8/gcc/system/libにこれら二つの共有ライブラリからのシンボリックリンクを作成し、特定のディレクトリtoolchain/gcc-4.8/gcc/-Bオプションを設定した

toolchain-build/binutils-2.23/ld/ld-new: cannot find crtbegin_dynamic.o: No such file or directory 
toolchain-build/binutils-2.23/ld/ld-new: cannot find -lc 
toolchain-build/binutils-2.23/ld/ld-new: cannot find -ldl 
toolchain-build/binutils-2.23/ld/ld-new: cannot find crtend_android.o: No such file or directory 

libgompのために設定するとき、私はこのエラーを取得しました。次に、crtbegin_dynamic.ocrtend_android.oを、コンパイルしてtoolchain-build/lib/gcc/arm-linux-androideabi/4.8/the find`コマンドにコンパイルしてインストールしたオブジェクトファイルcrtbegin.ocrtend.oにシンボリックリンクしました。設定がmakeが渡さ-Bオプションを指定して検索するために指していたthatsのために働いていた私にとってtoolchian-build/gcc-4.8/gccディレクトリ内から

ln -s ../../prefix/lib/gcc/arm-linux-androideabi/4.8/crtend.o crtend_android.o

:私はシンボリックリンクを作成するために使用

コマンドは、このように見えましたxgcc

私は誰かを助けることを願っています。 libatomicに移動する時間。 )

関連する問題