2010-07-01 4 views
3

우분투 리눅스에서 .la 파일의 심볼을 어떻게 덤프 할 수 있습니까?우분투 리눅스에서 .la 파일의 심볼을 어떻게 덤프 할 수 있습니까?

나는이 연결 오류 얻을 :

main.c:(.text+0xbfb): undefined reference to `Browser_new' 

을 그리고 난 내 main.c를이 libwebkit-1.0.la에 연결되어 생각합니다. 그렇다면 libwebkit-1.0.la에 'Browser_new'라는 기호가 있는지 어떻게 알 수 있습니까?

CXXLD libwebkit-1.0.la 
    CCLD Programs/GtkLauncher 

답변

4

문제는 C를 사용하고 libwebkit에 C++ 기호가있는 것일 수 있습니다. C++ 심볼 이름은 포함 파일에서 볼 수있는 것과 비교하여 mangled이됩니다.

어쨌든, 질문에 대답하기 : .la는 libtool 라이브러리입니다.

$ grep dlname libwebkit-1.0.la 
dlname='libwebkit-1.0.so' 

그리고 다음은 동적 기호를 표시하는 나노를 사용할 수 있습니다 .so 파일에 : 이것은 C++ 라이브러리의 경우

$ nm -D libwebkit-1.0.so 
... 

을, 당신이 사용할 수있는 보통은 .so를 파일을 가리키는 -C 플래그를 사용하여 C++ 함수 이름의 함 수를 제거합니다.

+0

감사합니다. 하지만 "nm -D libwebkit-1.0.so | grep Browser *"또는 "nm -D -C libwebkit-1.0.so | grep Browser *"를 시도했을 때 "U _ZN17Browser17testMsgEP14_WebKitWebView"만 보았습니다. 하지만 내 Browser.h, (C + + 클래스)에서 나는 단지 하나의 testMsg()보다 더 많은 공개 및 개인 메서드가 있습니다. – michael

+0

이것이 독자적인 Browser.h입니까? 그렇다면, .h에 메소드가 있지만 구현이없는 것처럼 들립니다. – richq

관련 문제