2011-08-24 3 views
4

배경에서 : 내 응용 프로그램이 링크 단계에서 실행하고 취득에 실패Android에서 동적 링커에서 디버그 출력을 활성화하는 방법은 무엇입니까?

MSG 아래 :

link_image [1995] ... lib1.so
가 실행

을 링크 할 수 없습니다

응용 프로그램은 다음과 같이 몇 가지 동적 라이브러리에 따라 다릅니다.

응용 프로그램에는 lib1, lib1 dlopen lib2가 필요하며 lib1에는 응용 프로그램에서 내 보낸 심볼 (전역 변수)이 있습니다.

나는 간단한 프로그램으로 lib2를 테스트했다. 그래서 나는 실패가 링크 단계에서 lib1로 인해 이라고 생각한다. (필자는 애플 리케이션이 필요로하는 다른 모든 라이브러리가 현재 디렉토리에 있고 "./"가 LD_LIBRARY_PATH에 추가되었다고 약속 할 수있다. 나는 또한 모든 것을 넣으려고했다./시스템/LIB)에 libs와

질문 :

  1. 가 어떻게 자세한 오류 메시지가 링커의 디버그 출력을 활성화 할 수 있습니까?
  2. 다른 제안 사항이 있으십니까?

EDIT1 : 좀 더 시험 후 , 링크 오류가

합니까 안드로이드는 별도의 빌드 플래그 글로벌 참조를 활성화해야하는 main.c에 정의 된 LIB1에 의해 참조되는 전역 심볼 때문이다 보인다 메인에있는 var?

+0

아무에게도 답변 드릴 수 있습니까? –

답변

1

다시 컴파일해야합니다. 여기에 적절한 (브랜치, 태그) 소스를 잡아 : 당신이 낮은 가고 싶은 경우

# Set LINKER_DEBUG to either 1 or 0 
# 
LOCAL_CFLAGS += -DLINKER_DEBUG=0 

것은, TRACE를 체크 아웃 :

https://github.com/android/platform_bionic/tree/master/linker

이 Android.mk에서, 당신은 1로 설정하려면() 및 DL_ERR(). 보시다시피 TRACE()는 사전 프로세서로 정의되어 있으므로 컴파일됩니다. 그렇지 않으면 debug_verbosity 또는 해당 검사에 대한 자신의 값으로 빠르게 패치 할 수 있습니다.

관련 문제