링킹 관련 object file을 다루는 binutils 몇가지를 설명하고 command 예제를 보인다.
nm: object 파일 내의 symbol 을 나열한다.
nm dasomoli.o
readelf: symbol table을 보인다.
readelf -s dasomoli.o
readelf -hSl dasomoli.o
몇가지 옵션은 다음과 같다.
-h --file-header Display the ELF file header
-l --program-headers Display the program headers
--segments An alias for --program-headers
-S --section-headers Display the sections' header
--sections An alias for --section-headers
-s --syms Display the symbol table
--symbols An alias for --syms
--dyn-syms Display the dynamic symbol table
--lto-syms Display LTO symbol tables
--sym-base=[0|8|10|16]
Force base for symbol sizes. The options are
mixed (the default), octal, decimal, hexadecimal.
objdump: object file 내의 machine level 명령 및 그 disassembly를 보인다. macOS에서는 gobjdump를 사용한다.
objdump -d dasomoli.o
다음과 같이 -s -j
옵션으로 section 내용 확인이 가능하다. -s 는 선택된 section의 모든 내용을 보여 준다. -j <section> 은 section의 내용을 모두 표시한다.
objdump -s -j .data dasomoli.out
-S 옵션으로는 source disassembly 내용을 표시한다.
objdump -S dasomoli.out
size: static memory layout에 해당하는 세그먼트를 살펴볼 수 있다. POSIX utility program이다. macOS에도 있다.
size dasomoli.out
size -m dasomoli.out