C/C++로 개발한 프로그램 빌드/배포에 관해 여쭤볼게요.
글쓴이: Jinwoong Han (S... / 작성시간: 수, 2017/04/19 - 2:34오후
안녕하세요.
현재 웹 개발자로 일하고 있습니다.
저는 예전부터 게임을 개발하고 싶었고 시스템 프로그래밍에 관심이 많습니다.
그런데 문득 궁금한게 생겼어요.
보통 오픈소스 소프트웨어를 다운받고 빌드하게 되면 bin파일들을 비롯해서 여러 바이너리 파일들이 생기구
보통 윈도우PC에서 게임을 다운받아서 설치해도 게임 실행파일과 리소스 파일들을 제외한 여러가지 바이너리 파일들이 생기는걸 본 것같아요.
여기서 궁금한게 있습니다.
하나의 바이너리 파일에 모든내용을 담아도 되는데 굳이 파일들을 쪼개서? 모듈단위로 쪼개서 파일을 배포하는 이유가 뭔가요?
제 추측으로는 게임같은경우 효율적인 패치를 위해서 인것 같기도 하고 아니면 필요할 때만 로드해서 최초 로딩 시간을 줄여주기 위한건가요?
오픈소스 소프트웨어도 비슷할 것 같아요. 모듈화에서 오는 장점들 때문에 나누는것 같기도 하고..
이게 맞는건가요? 이유를 알고싶습니다.
긴 글 읽어주셔서 감사합니다.
ps. 구글 계정으로 회원가입 했는데 개인정보 수정이 안되네요..
아이디에 사용할 수 없는 문자가 포함되어있다고 합니다.
그래서 시간대를 못 바꾸겠어요 제 시간대는 Asia/Seoul인데 수정을 못해서 평양으로 쓰겠습니다.
Forums:
또다른 평행 우주 세계의 얘기처럼 들리시겠지만...
또다른 평행 우주 세계의 얘기처럼 들리시겠지만...
실행파일 콘테이너 포맷에 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 에도 이 비슷한 기능이 있었는데 역시 기억이 나지 않네요.
댓글 달기