C/C++로 개발한 프로그램 빌드/배포에 관해 여쭤볼게요.

Jinwoong Han (SKYEND)@Google의 이미지

안녕하세요.

현재 웹 개발자로 일하고 있습니다.

저는 예전부터 게임을 개발하고 싶었고 시스템 프로그래밍에 관심이 많습니다.

그런데 문득 궁금한게 생겼어요.

보통 오픈소스 소프트웨어를 다운받고 빌드하게 되면 bin파일들을 비롯해서 여러 바이너리 파일들이 생기구

보통 윈도우PC에서 게임을 다운받아서 설치해도 게임 실행파일과 리소스 파일들을 제외한 여러가지 바이너리 파일들이 생기는걸 본 것같아요.

여기서 궁금한게 있습니다.

하나의 바이너리 파일에 모든내용을 담아도 되는데 굳이 파일들을 쪼개서? 모듈단위로 쪼개서 파일을 배포하는 이유가 뭔가요?

제 추측으로는 게임같은경우 효율적인 패치를 위해서 인것 같기도 하고 아니면 필요할 때만 로드해서 최초 로딩 시간을 줄여주기 위한건가요?

오픈소스 소프트웨어도 비슷할 것 같아요. 모듈화에서 오는 장점들 때문에 나누는것 같기도 하고..

이게 맞는건가요? 이유를 알고싶습니다.

긴 글 읽어주셔서 감사합니다.

ps. 구글 계정으로 회원가입 했는데 개인정보 수정이 안되네요..
아이디에 사용할 수 없는 문자가 포함되어있다고 합니다.
그래서 시간대를 못 바꾸겠어요 제 시간대는 Asia/Seoul인데 수정을 못해서 평양으로 쓰겠습니다.

bushi의 이미지

또다른 평행 우주 세계의 얘기처럼 들리시겠지만...

실행파일 콘테이너 포맷에 resource 를 위한 별도의 section 이 있어서 로더가 이에 대한 제어를 하는게 아니라면,
4GB 정도되는 일반적인 실행파일을 32bit OS 에서 실행할 방법이 없죠.
self-extract (SFX) 를 지원하는 압축프로그램들이 등장했던 초기에,
어설프게 이 기능을 구혔했던 놈들이 파일 데이타들을 data 섹션에 그냥 박아넣는 짓을 하는 바람에 크기가 큰 결과물이 나오면 실행이 안되서 압축이 풀리지 않던 사건도 있었고요.
뭐 지금도 http://makeself.io/ 같은 놈을 이용해서 거대한 파일들을 sfx shell script 로 변환할 때 주의를 기울여야 하는 건 변함없죠.

좀 더 처절했던 MSDOS 시절엔
http://forum.qbasicnews.com/index.php?topic=5381.0;wap2
같은 방법을 동원해서 자체적인 로더 비슷한 것을 내장시키기 전에는 실행 파일(데이타는 둘째고, 코드 사이즈만 따져도) 크기를 키울 수가 없었습니다.
borland 에서도 뭔가로 이름을 지어서 컴파일러를 팔아먹었었는데 기억이 나지 않고,
djgpp 에도 이 비슷한 기능이 있었는데 역시 기억이 나지 않네요.

댓글 달기

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