Android:错误:无法打开crtbegin_dynamic.o:没有这样的文件或目录

Jac*_*kie 23 android-ndk

我用了以下......

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

然后我创建以下代码文件...

int main ()
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试过了 ...

<toolchain>/arm-linux-androideabi-gcc test.c
Run Code Online (Sandbox Code Playgroud)

我也试过了

 <toolchain>/arm-linux-androideabi-gcc --sysroot=<toolchain>/sysroot test.c 
Run Code Online (Sandbox Code Playgroud)

两人都回来了......

 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
Run Code Online (Sandbox Code Playgroud)

Blu*_*ver 20

为简化起见,只需设置sysroot:

<toolchain>/arm-linux-androideabi-g++ ~/test.c -o ~/test --sysroot=/home/user/android-ndk/platforms/android-9/arch-arm/
Run Code Online (Sandbox Code Playgroud)


jww*_*jww 10

/ 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
Run Code Online (Sandbox Code Playgroud)

您还需要导出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
Run Code Online (Sandbox Code Playgroud)

您应该导出工具链中的所有工具:

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
Run Code Online (Sandbox Code Playgroud)

如果您正在使用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"
Run Code Online (Sandbox Code Playgroud)