2016-07-29 2 views
1

это моя текущая проблема. Теперь я пытаюсь перенести проект на x86 на Android. Но этот проект нуждается в поддержке библиотеки pthread и не может пройти этап конфигурации.не может найти lpthread при перекрестном компиляции на руку

Команда:

./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" 

Ошибка Msg:

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? И передать компиляцию в конце концов.

+0

Какую специфическую кросс-цепочку (цель, версия и т. Д.) Вы используете? Эта цель «arm-eabi» звучит так, будто у вас есть цельная цепочка, ориентированная на цель, которая может быть построена без поддержки pthreads. Для Android вы, вероятно, захотите использовать инструментальную цепочку arm-linux-androideabi из NDK. – Notlikethat

+0

@Notlikethat, Привет, я сменил хост на «arm-linux-androideabi», у него все еще есть такая проблема. ANDROID_TARGET = armv7-none-linux-androideabi TOOLCHAIN ​​= arm-linux-androideabi – Jon

ответ

2

POSIX Threads (Pthreads) для Android:

андроид Libc, бионический, обеспечивает встроенную поддержку Pthreads, so no additional linking (-lpthreads) is necessary. Он не реализует все функции POSIX Threads и оставляет поддержку чтения/записи блокировки, pthread_cancel(), взаимные мьютексы процесса и переменные условия, а также другие дополнительные функции.

Так что не нужно добавлять -lpthreads и удалять чек также.

+0

Я увидел этот ответ и попробовал. Дело в том, что я не могу пройти autoconf без каких-либо флагов. – Jon

+0

Не удаляйте все флаги, удаляющие связанные с pthread вещи .... – Mohan

+0

удален уже и не работает должным образом, все еще не удается найти pthread – Jon

Смежные вопросы