executable binary size 줄이기

mdruffy02의 이미지

보통의 경우 embeded 환경에 올리기 위하여 binary size를 제약받을 것 같은데,
어떠한 방법으로 줄일 수 있을까요? 혹시 팁이 있을런지?

제가 아는 것은 이런 것 밖에.. (이쪽 경험이 없어서)
1. 불필요한 코드 제거
2. 최적화 옵션 조정 (이건 좀 선택하기 어렵고..)

만일 C++로 한다면 상속으로도 사이즈가 줄어들까요?

혹시 좋은 팁이 있으시다면 가르침 부탁드립니다. ㅠㅠ

익명 사용자의 이미지

팁 하나) 라이브러리 선택에서 배보다 배꼽이 큰지 아닌지를 판단해 본다.
----------
10 MB 라이브러리에서 실제 사용하는 코드가 10 KB 라면, 10 KB 부분만 라이브러리로 추려서 다시 링크하는게 좋겠지요. 불필요한 코드 제거와 일맥 상통한다고 볼 수 있습니다.

아울러, 무거운 라이브러리보다는 가벼운 라이브러리를 사용하시는게 좋겠습니다.
무겁다는 것은 현재 실제 사용하는 루틴 대비, "아직은 사용하지 않는데, 혹시나 미래에 사용할지도 몰라서......?" 거대한 라이브러리를 사용하는 것입니다.
또는, 약간의 편리(대부분 개발자의 편의를 위해)를 위해 거대한 라이브러리를 사용하는 것도 마찬가지겠지요. 임베디드 환경에서는 대체로 개발자가 편하고자 하면 코드가 커집니다. 임베디드라면 개발자가 사서고생하는게 필요하다고 생각합니다. SI개발 같은 경우라면, 생산성, 관리 등이 더 중요하니, 관점이 달라지겠지요?

* 어떤 임베디드환경(원칩컴퓨터)에서는 printf()를 풀(full)로 구현한 버전은 이 조차도 너무 커서, 이를 간소하게 약식으로 만들어 사용하기도 합니다. 약식이라함은 예를 들어, %d %c만 되게 하고 그외 %f, %ld, %s 등이 필요 없으면 이 부분에 대해서는 구현조차 하지 않은 것을 만들어 사용한다 던지 등등입니다.

mdruffy02의 이미지

static link 시 단순 링크하면 전체(혹은 사용하지 않는 부분)가 함께 붙게 되나요?
여태껏 사용된 부분만 link되는 것으로 생각하고 있었는데.. (실제로 run-time에 호출되지 않더라도 코드상에 있으면)

백연구원의 이미지

strip - Discard symbols from object files.

생각보다 대단한 효과를 얻습니다.


소곤소곤

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.