使用NDK交叉编译第三方C库出现crtend_so.o或crtbegin_so.o: No such file or directory错误

错误信息

/opt/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: crtbegin_so.o: No such file: No such file or directory

collect2: ld returned 1 exit status

Makefile:492: recipe for target 'libexpat.la' failed

尝试过把crtbegin_so.o所在目录加入LDFLAGS,或是按照其他人说的在Makefile目录下生成crtbegin_so.o的软链接,问题依然存在。crtend_so.o: No such file or directory的情况也一样。

编译环境

PC:Ubuntu 16.04

目标系统:arm-linux-androideabi

NDK版本:android-ndk-r8e

解决办法

在LDFLAGS中加上NDK路径:

--sysroot=${ANDROID_NDK}/platforms/android-14/arch-arm

我使用./configure生成配置时,加入参数LDFLAGS="--sysroot=/opt/android/android-ndk-r8e/platforms/android-14/arch-arm/"。

StackOverflow原文中提到路径需要加上引号,即:

--sysroot="${ANDROID_NDK}/platforms/android-14/arch-arm"

但是经过测试,这两种写法都生效了,一并做下记录。

附上StackOverflow原文链接:https://stackoverflow.com/questions/6881164/crtbegin-so-o-missing-for-android-toolchain-custom-build/10295118

你可能感兴趣的:(使用NDK交叉编译第三方C库出现crtend_so.o或crtbegin_so.o: No such file or directory错误)