응용프로그램 용량 증가 질문?

ssik425의 이미지

- 현재 작성되어 프로그램을 수정 중입니다. 제가 작성한게 아니라 다른분이 하신걸 엉겹결에 수정하게 되었지요.. :oops:
그런데 이상한 일이 발생 했습니다. 전에부터 그랬는지는 확실하지 않지만,, 오프젝트 파일의 용량이 너무 크고 실행파일의 용량도 너무 비대합니다.
예를 들어 view.c라는 파일이 있는데 28k 정도(약 800라인)인데.. 이걸 아래와 같은 옵션으로 컴파일 하면

Quote:

gcc -c -g -Wall -DDEBUG -I. -I/usr/include

view.o(오브젝트파일)의 용량이 갑자기 3.9M가 되어 버립니다.
소스가 조금 길다면 이해를 하겠는데 . 도무지 알수가 없네요... 이파일 때문에 전체적인 실행파일의 크기가 (약 4M)증가하는 것 같은데..
혹 이런 경우 아시는분 계신가요? 답변 부탁드립니다.

ssik425의 이미지

추가적으로 현재 FC4를 사용중이고 gcc는 4.1 버전입니다. 그런데.. Redhat9에서도 동일한 문제가 나오네요..

개발자들의 궁극적 비전은 ?

cjh의 이미지

-g 옵션을 빼 보세요.

--
익스펙토 페트로눔

ssik425의 이미지

gcc -c -O2 -I. -I/usr/include 와 같이 해도 동일합니다. 용량이 증가하는 주요원인은 뭐가 있을까요?

개발자들의 궁극적 비전은 ?

doldori의 이미지

-E 옵션으로 전처리 후의 코드를 살펴보세요.

progcom의 이미지

strip 으로 각종 심볼을 제거하면 많이 줄어들겁니다. (특히, -g 로 디버그 정보가 잔뜩 들어갔다면 1/10 정도로 줄어드는 경우도 있었습니다)

같은 소스라면 크게 차이가 나지 않을 듯 싶은데, 크기를 줄이고자 한다면 -Os 로 컴파일 하는 것도 괜찮겠지요.

ssik425의 이미지

progcom 님 답변 고맙습니다.
하지만, 이미 strip 이나 -Os 옵션등은 이미 시도해본 뒤입니다. :oops:
용량에 아무런 변화도 없습니다.
doldori 님 의견 처럼 전처리를 거쳐서 비교해 보아도 역시나 소스파일과의 큰 용량 차이는 없는데도 불구하고 컴파일시 3.9M로 용량이 늘어 납니다.

혹시나 하는 마음에 Assem으로 변화하여 보았는데 별다른 용량의 증가는 보이지 않습니다. 다만 이걸 오브젝트 파일로 컴파일 하면 그때부터 용량이 커지네요..
전체 오브젝트 용량(view.o제외한)이 400K정도인데 view.o 의 용량이 3.9M이니 참.. 난감하네요... view.o만 용량을 줄일 수 있다면 500k정도로 실행파일을 낮출 수 있을텐데... :evil:

개발자들의 궁극적 비전은 ?

ssik425의 이미지

- 자문자답이네요... ^^

소스내부에 설정된 변수가 문제였습니다. 다음과 같이 짜여져 있더군요...

int num[100000];

설마 했는데 이런 코드를 작성 했을 줄이야 ㅠ.ㅠ

개발자들의 궁극적 비전은 ?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.