VC6.0에서의 컴파일과 VC 2005 에서의 컴파일의 결과물의 사이즈 차이...
글쓴이: dingkyu / 작성시간: 월, 2009/07/20 - 6:36오후
안녕하세요. 언제나 한수 얻어 배워가는 딩규입니다.
오늘도 너무 궁금한게 하나 생겨서 질문글 올려봅니다.
제가 회사에서 C소스를 이용한 라이브러리를 컴파일하라는
지시를 받았는데요 컴파일 환경이 VC6.0 , VC 2005 둘을 사용합니다.
그런데 똑같은 코드, 똑같은 환경설정을 해주었음에도 불구하고
두 컴파일러에 따라 결과물의 사이즈가 너무 다릅니다.
VC6.0 에서 컴파일해서 라이브러리 파일의 사이즈를 보면 900Kb 정도 나옵니다.(릴리즈 모드)
그런데 VC 2005에서 컴파일해서 사이즈를 보면 2700Kb (역시 릴리즈 모드)에 육박합니다.
소스코드에 뭐 하나 첨가 된거 없고 소스코드의 위치는 동일하게 해서
컴파일 했는데도 불구하고 위와 같은 결과가 나옵니다.
릴리즈 모드에서는 -O2 옵션을 줬는데 말이죠...
이게 대체 왜 그런걸까요 ?
너무 궁금합니다.
Forums:
MS도 10년동안 같은
MS도 10년동안 같은 사골로 국물을 내진 않습니다. -_-;
진짜 몰라서 그러는데
같은 사골로 국물을 내진 않는다는게 어떤 의미지요 ?
컴파일러가 더 성능이 나빠졌다는 의미인가요 ?
아니면 다른 뜻이 있는건가요 ?
진짜 몰라서 질문올린거니까 가능하면 좀 자세히 설명해 주시면
고맙겠습니다.
고민이 많아 고민인 애늙은이 입니다.
차이가 좀 많이
차이가 좀 많이 나기는 하네요.
혹시 6.0 에 최적화된 셋팅이지 않나요?
실행 파일의 크기는 큰 문제는 안되는 듯 합니다만.
최적화 알고리즘의 차이 아닐까여?
즐린
최적화 알고리즘이 버뀌면 파일 크기가 다르고 실행속도가 달라질수도 있을거 같은데
즐린
visual c 사용 기억이 가물 가물하긴 한데
output gui library 차이나, 윈도우즈, win32 변화에 따라 추가된 routine 유무도 꽤 영향을 줄 듯
코드가 특정 컴파일러에 최적화 된건 아닙니다.
회사에서 개발(정확히는 미국의 어느 회사가 개발한 코드)한 임베디드 UI용
코드라 특정 컴파일러에 최적화 되었다고 보기엔 어렵다고
생각하구요, 제가 봐도 그냥 C 코드이지 특별히 다른건
없어보이거든요.
아무리 생각해봐도 VC6.0 에서 컴파일할때는 없는 무언가가 VC 2005 에서
추가되어 컴파일 되었다고 밖에 볼수 없을거 같긴 한데...
명확하게 알수 있는 방법은 없는 모양이네요...
그냥 VC6.0 쓰라는 뜻일까요 ?
고민이 많아 고민인 애늙은이 입니다.
asm code 파일들을 diff로 대강 비교해 보세요.
diff로 차이가 나는 상단 부분들을 대강 훓어보면 그럭 저럭 알 수 있지 않을까요?
기본적으로 ..
일단 MSVCRT 의 크기가 다ㅎ를겁니다 . 6.0 과 2005에서 사용되는 run time library 와 standard - C library 등이 달라집니다 . 아!그리고 2005라면 .net framwork 1.0이 기본으로 지원되니까요 그것도 다르겠죠
crt가 정적링크로
crt가 정적링크로 되어있는지 확인해보세요. 정적링크로 되어있으면 차이가 좀 납니다.
그리고 디버깅 정보가 포함되도록 옵션이 세팅되어있는지 확인해보세요. 이것 때문이라면
꽤나 많은 차이가 납니다.
이런 것들이 두 개발툴의 프로젝트에 공통적으로 적용되어 있는지 확인해보세요.
그리고 위에 닷넷 프레임워크를 말씀하신 분은 프레임워크랑 상관 없을듯 합니다.
필요하면 동적링크 되고 쓰지 않는다면 링크도 안됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
manifest 정보 때문이지
manifest 정보 때문이지 않을까 싶은데요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
기타 부가적인 정보가 들어가니까요.
Manifest도 추가되고...
기타 DEP라던가 여러가지 옵션들이 더 많은데 직접적으로 비교하기는 어렵지 않을까요?
그냥 오브젝트 파일만 놓고 보면 비슷할 것 같은데요.
댓글 달기