[질문]elf 파일에서 bin 파일 생성시 사이즈가 더 커지는 문제입니다.

fat81의 이미지

안녕하세요! 임베디드를 공부하는 학생입니다. arm 아키텍처 기반에서 프로그램을 짜던 중에 이상한 문제가 있어서 질문을 올립니다.

소스코드는 간단하게 다음과 같습니다.

#include <stdio.h>
 
   int a = 0;
 
   int main(void)
   {
     int b;
     b = a;
     return 0;
  }

파일 이름은 a.c 입니다.
그리고 나서 아래와 같이 컴파일 하고 생성된 elf 파일을 bin 파일로 생성했습니다.
#arm-linux-gcc -o a a.c
#arm-linux-objcopy -O binary -R .note -R .comment -R .stab -R .stabstr -S a a.bin
#ls -al
-rwxr-xr-x    1 root     root         7690 May 18 14:22 a
-rwxr-xr-x    1 root     root        34260 May 18 14:27 a.bin

제가 알기로 bin 파일은 elf 파일보다 elf 정보가 제거되기 때문에 사이즈가 작은 것으로 알고 있습니다. 혹시나 그냥 gcc 로 컴파일해서 objcopy 로 bin 파일을 만들었더니, 예상대로 elf 보다 사이즈가 작은 bin 파일이 생성되었습니다.

어떤 이유로 이런 현상이 나타나는지 모르겠습니다. 혹시 아시는 분 있으시면 답변 부탁드리겠습니다.

ohhara의 이미지

파일 안을 직접 보시는게 빠를 것으로 생각됩니다.
아마도 elf의 섹션간에 빈 공간이 넓게 있을 때 elf는 시작과 길이를 지정하는 방싟이지만 bin은 빈 공간을 정말로 빈 공간으로 채워넣기 때문에 크기가 늘어났을 것 같습니다.

Taeho Oh ( ohhara@postech.edu , ohhara@plus.or.kr ) http://ohhara.sarang.net
Postech ( Pohang University of Science and Technology ) http://www.postech.edu
Digital Media Professionals Inc. http://www.dmprof.com

Taeho Oh ( ohhara@postech.edu ) http://ohhara.sarang.net
Postech ( Pohang University of Science and Technology ) http://www.postech.edu
Alticast Corp. http://www.alticast.com