Android:错误:无法打开crtbegin_dynamic.o:没有这样的文件或目录是怎么回事?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (71)

我用了以下:

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

然后我创建下面的代码文件:

int main ()
{
  return 0;
}

我试过了 :

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

我也试过了:

 <toolchain>/arm-linux-androideabi-gcc --sysroot=<toolchain>/sysroot 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
提问于
用户回答回答于

为了使它更简单,只需设置sysroot:

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

/ arm-linux-androideabi-gcc test.c

sysroot在这个失踪:

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

这一个,sysroot是错误的。它应该类似于:

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

你还需要导出LD(所有工具都应位于路径中):

$ 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

你应该可以导出工具链中的所有工具:

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"

扫码关注云+社区