nm 명령 실행시 나오는 메시지에 대해 질문드립니다.

poplinux의 이미지

g++ 로 공유 라이브러리 형태로 컴파일하였고 C에서도 가져다 쓸 수 있도록 헤더에 extern 을 추가하였습니다.

이렇게 컴파일 한후 nm 명령을 사용하여 생성된 obj 를 보면 다음과 같이 뜹니다.

00000bd0 T I2C_Read
00000f90 T I2C_Read_NoSubAddr
0000112c T I2C_Select_Segment
00000a14 T I2C_Write
00000e24 T I2C_Write_NoSubAddr
000008f8 t _Z10I2C_RdByteP3i2cPh
00000860 t _Z10I2C_WrByteP3i2ch
000006a0 t _Z11I2C_SendAckP3i2c
000006e0 t _Z11I2C_WaitAckP3i2c
00000660 t _Z12I2C_SendNackP3i2c
0000004c t _Z22I2C_RMMicroSecondSleepP4gbusmm
00000000 t _Z26I2C_RM27MicroSecondElapsedP4gbusm
00000298 t _Z8I2C_DataP3i2ch
000005c8 t _Z8I2C_StopP3i2c
000000d4 t _Z9I2C_ClockP3i2ch
000004f4 t _Z9I2C_StartP3i2c
0000045c t _Z9I2C_WrBitP3i2ch
         U _gp_disp
         U gbus_read_uint32
         U gbus_write_uint32

위 내용중에서 "T" 나 "U" 는 정확히 알겠습니다. "t" 에 관련된 내용은 어떤 의미인지 잘 모르겠습니다. 보면 "t" 로 시작하는 심벌은 앞에 "_Z11I2C" 등과 같은 형태의 헤더가 붙어 있는데 이게 어떤 의미인지요?

cinsk의 이미지

대문자는 external symbol, 소문자는 local symbol입니다.

자세한 것은 nm와 c++filt 활용을 참고하기 바랍니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/