如何使用GCC的不同路径的C库

时间:2012-03-04 02:34:36

标签: android gcc android-ndk cross-compiling

我使用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

2 个答案:

答案 0 :(得分:2)

最后,我找到了解决方案。它可以通过将“--sysroot =”选项再次传递给链接器而不是仅使用编译器来解决,使用

-Wl,--sysroot=/opt/android-ndk/platforms/android-8/arch-arm/

答案 1 :(得分:1)