arm-elf-gcc 디버깅정보 관련 질문입니다...
안녕하세요..
질문 몇개만 할께요...
arm-elf-gcc 와 arm-linux-gcc 의 차이점이 정확히 무엇인가요??
일단 저는 arm-elf-gcc 는 디버깅 정보를 포함한 ELF 파일을 컴파일하는것이고
arm-linux-gcc 는 ELF 파일이긴 하지만 디버깅 정보를 포함하지 않는다고 알고 있습니다..
그런데 실제로 컴파일을 해보니...
예) test.c
#include
int main()
{
printf("Hello world!!");
return 0;
}
이런 가벼운 프로그램을 생성하고
# arm-linux-gcc -o test-linux test.c
# arm-elf-gcc -o test-elf test.c
컴파일을 하고 나면..
-rwxr-xr-x 1 root root 221471 10월 3 19:40 test-elf
-rwxr-xr-x 1 root root 13380 10월 3 19:40 test-linux
이렇게 두 파일 크기가 차이가 납니다.. 그래서 objdump 를 이용해서..
# objdump -g test-linux 이렇게 입력하면
디버깅 정보가 출력 됩니다.. 그런데
# objdump -g test-elf 이렇게 입력하면
objdump: test-elf: no recognized debugging information
이런 메시지가 나옵니다....... 어떻게 된건지..... 알려주시면 감사하겠습니다....
아 그리고 또한가지 질문 드릴게요...
arm-elf-gcc 로 컴파일 할때 옵션을 주면
예를들어 test.c 파일을 컴파일하면 실행파일과 더불어 test.gdb 란 파일이 생긴다는데...
어떤 옵션인지 알려주세요... --help 로 옵션을 다 살펴보았는데 못찾겠더군요...
부탁드립니다~~
자세히는 모르지만
컴팔 옵션은 -Wl,-elf2flt로 주시면 됩니다.
arm-elf-gcc -Wl,-elf2flt -o hello test.c
그리고 objdump를 사용하시려면 arm-elf-objdump를 사용하셔야 합니다.
elf로 컴팔햇으니 elf로 덤프하신다고 보시면 됩니다.
위 방식대로 하면 gdb파일이 생깁니다.
arm-elf-objdump -g hello.gdb
하시면 원하는 결과를 얻으시라고 생각됩니다.
-elf2flt 옵션
elf2flt는 flt라는 파일 포멧으로 바꾸라는 옵션입니다.
보통 uClinux에서 사용하는 파일 형식이죠. 아마도 elf와 거의 같은데, elf헤더를 모두 제거 하는 것으로 기억합니다.
flt를 사용하지 않고 순수한 elf형식을 사용할 때는 -elf2flt 옵션은 사용하지 않으시는게 좋습니다.
-elf2flt 옵션을 주었을 경우 test.gdb를 만들어 내기는 하지만, 그 목적으로 사용하는 옵션은 아닙니다.
http://jungjun.net
답변 정말
답변 정말 감사드립니다~~~
그런데 한가지더 질문사항이 있습니다..
arm-elf-gcc 로 test.c 를 옵션을 주어서 컴파일을 하면 test.elf와 test.elf2flt 라는 파일이 생긴다고 들었습니다...
이것은 어떤 옵션을 주어야 할까요... 도움 주시면 감사하겠습니다...
어디서 그렇게
어디서 그렇게 들으셨는지는 잘 모르겠지만,
제가 아는 한도내에서 *.elf와 *.elf2flt를 만들어주는 옵션은 잘 모르겠습니다.
(제가 사용하는 arm-elf-gcc의 버전은 다음과 같습니다.
gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(-msep-data patches)
)
단지,
arm-elf-gcc -Wl,-elf2flt -o test test.c
를 하는 대신에,
arm-elf-gcc -c test.c
arm-elf-ld test.o -o test.elf
elf2flt -o test.elf2flt test.elf
이렇게 컴파일과 링크를 각각하기도 합니다.
(마지막의 elf2flt는 elf에서 flat으로 변환시켜주는 유틸입니다.)
혹시 두번째 방법으로 하는 예제를 보시고, 그렇게 생각하시는 것은 아닌지 조심스럽게 추측해봅니다.
http://jungjun.net
댓글 달기