2016-10-07 5 views
1

실행 파일 (ndk r10e와 ndk r12b로 컴파일 됨)을 생성하는 Android 기본 프로젝트를 작성 중입니다. 생성 된 실행 파일을 실행하려고하면 오류가 발생합니다 dlopen failed : 라이브러리 "libtest.so"을 찾을 수 없습니다.

dlopen failed: library "libtest.so" not found 

은 분명히 "/my/system/path/libtest.so는"이 존재하고 올바른 권한 (예 : 666)을 가지고 그것을 열 수 없다는 것을.

내 장치 중 하나에서만 사용할 수 있습니다. 필자는 10 개 이상의 장치에서이를 테스트했으며 완벽하게 실행되는 것 같습니다.

왜이 오류가 발생하는지 알 수 없습니다.

도와주세요.

+0

libtest.so는/system/lib 디렉토리에있는 것 같습니다. 맞습니까? 귀하의 장치에 대해 더 자세히 알려주십시오. AFAIK Android 6.0에서는 앱에 비표준 시스템 라이브러리를 사용할 수 없습니다. – jereksel

+0

죄송합니다./my/system/path /는/system/lib가 아니라/data/local/temp 또는 다른 경로와 같은 일반 경로입니다. 이 장치는 뿌리가 안드로이드 5.1.1 – mrpep

+0

당신은 라이브러리에 대한 절대 경로 또는 단지 이름으로'dlopen'을 호출하고 로컬 디렉토리에서 사물을 찾길 기대하고 있습니까? –

답변

0

아마도 정확히 무슨 일이 벌어지고 있는지 가장 쉬운 방법은 strace를 사용하는 것입니다. 이렇게하면 libtest.so를 찾으려는 곳과 찾지 못한 이유가 표시됩니다. android에서 strace를 사용하는 방법은 this answer을 참조하십시오.