我正在使用 Android NDK GCC 工具链将项目编译为命令行。 我的 gcc 位置是
/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
我正在使用 gcc 选项
--sysroot=/opt/android-ndk/platforms/android-8/arch-arm/
构建Hello World时没有问题。但是对于这个项目,在链接期间,它会产生错误:
/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld:
crtbegin_static.o: No such file: No such file or directory
实际上,“crtbegin_static.o”位于
/opt/android-ndk/platforms/android-8/arch-arm/usr/lib
如果我把它放在
/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3
那么这个问题就可以解决了。
有没有办法让 gcc 正确定位 crtbegin_static.o
。
最佳答案
最后,我找到了解决方案。可以通过将“--sysroot=”选项再次传递给链接器来解决,而不仅仅是编译器,使用
-Wl,--sysroot=/opt/android-ndk/platforms/android-8/arch-arm/
关于android - 如何在 GCC 中使用来自不同路径的 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551836/