컴파일 된 라이브러리에 포함 된 사용 가능한 기능 등을 어떻게 나열 하시겠습니까?

StackOverflow https://stackoverflow.com/questions/392142

  •  23-08-2019
  •  | 
  •  

문제

라이브러리 내에 함수가 존재하는지 또는 컴파일 된 라이브러리에 함수를 나열하는지 어떻게 결정합니까?

도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 nm 정적 라이브러리에 기호를 나열하도록 명령.

nm -g -C <libMylib.a>

다른 팁

ELF Binaries의 경우 Readelf를 사용할 수 있습니다.

readelf -sW a.out | awk '$4 == "FUNC"' | c++filt

-s: 목록 기호-W: 너무 긴 이름을 자르지 마십시오

그런 다음 AWK 명령은 모든 기능을 필터링하고 C ++ Filt는이를 완화시킵니다. 즉, 내부 명명 체계에서 변환하여 인간 읽기 가능한 형태로 표시됩니다. 이와 유사한 이름을 출력합니다 (boost.filesystem lib에서 가져온) :

285: 0000bef0    91 FUNC    WEAK   DEFAULT   11 boost::exception::~exception()

C ++ Filt가 없으면 이름이 다음과 같이 표시됩니다. _ZN5boost9exceptionD0Ev

Microsoft 도구의 경우 "link /dump /symbols <filename>"Gory 세부 사항을 제공 할 것입니다. 아마도 읽기 쉬운 목록을 제공하는 다른 방법 (또는 옵션)이있을 것입니다.

Linux/Unix에서 사용할 수 있습니다 objdump -T 주어진 객체에 포함 된 내보내기 기호를 나열합니다. 창문 아래에 있습니다 dumpbin (IIRC dumpbin /exports). 오버로드를 허용하기 위해 C ++ 기능 이름이 엉망이됩니다.

편집 : CodeLogic을 본 후 Anwser 나는 Objdump도 -C를 이해하는 것을 이해한다는 것을 기억했다.

이 명령 사용 :

objdump -t "Your -library"

기능 이름뿐만 아니라 전체 기호 테이블이 원하는 것보다 더 많이 인쇄됩니다. 받는 기호의 다양한 속성을 확인하면 변수와 물건에서 함수를 정리할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top