2016-07-29 3 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" 

오류 메시지 :

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 

함께 도와주세요 : 어떻게 바로 플래그를 부착하는 방법? 또는 autoconf를 속이는 법? 또는 libpthread를 교차 컴파일하는 방법은 무엇입니까? 이 마지막으로 컴파일을 전달합니다.

+0

어떤 특정 교차 툴체인 (대상, 버전 등)을 사용하고 있습니까? 이 "arm-eabi"타겟은 베어 메탈을 타겟으로하는 툴 체인을 가지고있는 것처럼 들리며, pthread를 지원하지 않고도 구축 할 수 있습니다. Android의 경우 NDK의 arm-linux-androideabi 툴 체인을 사용하고 싶을 것입니다. – Notlikethat

+0

@Notlikethat, 안녕하세요, 호스트를 "arm-linux-androideabi"로 변경했지만 여전히 문제가 있습니다. ANDROID_TARGET = armv7-none-linux-androideabi TOOLCHAIN ​​= arm-linux-androideabi – Jon

답변

2

POSIX 스레드 안드로이드에 대한 (의 pthreads) :

안드로이드 libc의, 생체 공학은, so no additional linking (-lpthreads) is necessary. 그것은 전체 POSIX 스레드 기능을 구현하지 않습니다,의 pthreads에 대한 지원 내장 및 읽기에 대한 지원을 남긴다 제공/쓰기 잠금, pthread_cancel(), 프로세스 공유 뮤텍스 및 조건 변수뿐만 아니라 기타 고급 기능.

-lpthreads을 추가하고 제거하지 않으셔도됩니다.

+0

이 대답을보고 시도했습니다. 것은 플래그없이 autoconf를 전달할 수 없다는 것입니다. – Jon

+0

모든 플래그를 제거하지 마십시오. pthread 관련 항목을 제거하지 마십시오 .... – Mohan

+0

이 이미 제거되었고 제대로 작동하지 않았지만 여전히 pthread를 찾을 수 없습니다. – Jon

관련 문제