2010-05-27 4 views

답변

2

아니오. 오브젝트 파일에는 기본적으로 기호 이름에서 주소에 이르기까지 (nm과 같은 명령으로 표시 할 수있는) 맵핑이 들어 있지만 유형 정보는 절대적으로 없습니다.

약간 단순화하고 있습니다 (일부 기호는 사용되지만 오브젝트 파일에는 정의되지 않았고 다른 것은 정의 됨). 그러나 대답은 여전히 ​​아니오입니다.

예를 들어, 내가 마지막으로 컴파일 한 임의의 파일에 nm a.out의 결과는 다음과 같습니다. 이 예제는 너무 작아 gcc builtins가 자신이 정의한 기호보다 많습니다. 그러나 형식 정보가 없습니다 ...

$ nm a.out 
0000200c D _NXArgc 
00002008 D _NXArgv 
00002000 D ___progname 
00001fbc t __dyld_func_lookup 
00001000 A __mh_execute_header 
00002004 D _environ 
     U _exit 
00001fca T _main 
     U _rand 
00002030 S _x 
00002010 d dyld__mach_header 
00001fa8 t dyld_stub_binding_helper 
00001f68 T start 
+0

디버깅 기호로 컴파일하는 경우에는 해당되지 않습니다. libbfd가 그것을 읽을 수 있거나, 당신이 사용하고있는 디버깅 형식에 상관없이 라이브러리를 얻을 수 있습니다. –

+1

@Tim 그러나 함수에 대한 인수는 여전히 당신에게 수수께끼 일 것입니다. – joveha