交叉编译到arm时找不到lpthread

时间:2016-07-29 20:00:02

标签: android arm pthreads cross-compiling

这是我目前的问题。现在我正在尝试将基于x86的项目移植到android。但是这个项目需要pthread库支持,而不能通过配置阶段。

命令:

./configure --build=${BUILD_SYS} --host=arm-eabi  --prefix=${PREFIX} --disable-rpath --disable-libasprintf --disable-java --disable-native-java --disable-openmp --disable-curses

编译器和编译标志:

export CFLAGS="--sysroot=${SYSROOT} -I${SYSROOT}/usr/include -I${PREFIX}/include -I${NDK}/sources/android/support/include -pthread -fPIE -DANDROID -Wno-multichar"
export CXXFLAGS=${CFLAGS}
export CPPFLAGS="--sysroot=${SYSROOT} -I${SYSROOT}/usr/include -I${PREFIX}/include -I${NDK}/sources/android/support/include -pthread -DANDROID -DNO_XMALLOC -mandroid"
export LIBS="-lc -lgcc -lstdc++ -ldl"
export LDFLAGS="-Wl,-L${SYSROOT}/usr/lib -L${PREFIX}/lib -L${NDK_TOOLCHAIN}/lib"

错误消息:

checking for WIN32... no
checking for Mac... no
checking for Linux... compile in linux
checking for uuid_generate in -luuid... yes
found library uuid
checking for pthread_create in -lpthread... no
configure: error: *** Unable to find pthread library

请帮忙:如何附上正确的旗帜? OR 如何欺骗autoconf? OR 如何交叉编译libpthread? AND 最后通过编译。

1 个答案:

答案 0 :(得分:3)

Android的POSIX线程(pthreads):

android libc,bionic,为pthreads提供内置支持, so no additional linking (-lpthreads) is necessary. 它没有实现完整 POSIX线程功能并且不支持读/写锁, pthread_cancel(),进程共享的互斥锁和条件变量以及 其他更高级的功能。

因此,无需添加-lpthreads并删除支票。