Tag Archives: gnu

Make 기반 빌드 시스템 (9): 공유 라이브러리 지원

공유 라이브러리 지원 재활용하기 쉽고 필요한 라이브러리들과 응용 프로그램들을 한방에 빌드할 수 있는 빌드 시스템을 구축하는 사이, MyClient 포로토타입을 받아 간 우리의 영업맨, 어느 날 ‘짐짓 들뜬’ 표정을 지으며 달려 옵니다. 아~~, 갑자기 드는 불길한 예감! 아니나 다를까, 계약 딴거나 다름 없다며, 이제 정말 ‘사소한 거’ 하나만 해 주면 된다네요. 사소한 거라, 진짜로요? 아 그렇다니까. […]

Posted in 소프트웨어 | Also tagged , , , , , , , , , , , , , , , , | 6 Responses

Make 기반 빌드 시스템 (8): make 재귀 호출에 의한 배치 빌드

지난 글에서, 하나의 라이브러리를 적절한 의미와 규모를 가지는 여러 개의 라이브러리들로 구성하되, 각 라이브러리의 개별 설정과 전체 라이브러리들의 일괄 변경을 쉽게 처리할 수 있도록 Makefile의 공용 include 파일들을 분리해 내고 이들을 쉽게 관리할 수 있는 빌드 디렉토리의 구성해 보았습니다. 이걸 가지고 하나로 빌드하던 라이브러리를 MyNetwork, MyThread, MyProtocol 이렇게 3개의 라이브러리들로 나누었고, 덕분에 나중에 다른 프로그램 […]

Posted in 소프트웨어 | Also tagged , , , , , , , , , | 7 Responses

Make 기반 빌드 시스템 (7): 빌드 디렉토리 구성

빌드 디렉토리 구성 이제까지 작성한 예제 6.1을 가지고, 하나의 라이브러리와 이를 사용하는 여러 실행파일들을 한번에 빌드할 수 있습니다. 라이브러리에 새로운 소스 파일을 추가하거나, 새로운 실행파일의 추가하려면, Makefile의 한 줄만 고치면 됩니다. depend만 적절한 시점에 한번씩 실행시켜 주면, 수정된 파일들에 영향받는 파일들만 정확하게 컴파일해서 라이브러리와 이를 사용하는 실행파일들을 다시 빌드해 줍니다. 그런데 라이브러리에 포함되는 소스 파일들이 많아지면 […]

Posted in 소프트웨어 | Also tagged , , , , , , | 2 Responses

Make 기반 빌드 시스템 (6): 빌드모드 별 결과물 관리

빌드모드 별 결과물 관리 이전 글에서 작성된 Makefile 5.1의 경우, 디버그와 릴리즈 모드 구분을 하는 것까지는 잘 됐지만, 개발 과정에서 불편한 문제가 하나 있습니다. 예를 들어 먼저 디버깅 모드로 빌드해서 테스트, 문제 없이 잘 동작하는 것을 확인한 다음, 이제 버전 관리 툴에 커밋하기 전에 확인 사살 차원에서 릴리즈 모드로도 잘 동작하는 것을 확인하는 상황을 생각해 […]

Posted in 소프트웨어 | Also tagged , , , , , , | 1 Response

Make 기반 빌드 시스템 (5): 디버그 버전과 릴리즈 버전 빌드

디버그 버전과 릴리즈 버전 빌드 소프트웨어 개발자라면 누구나 한번쯤 경험해 보셨겠지만, 소프트웨어 개발하는 과정 중에는 종종 정말이지 아무것도 믿을 수 없는 상태에 빠질 때가 있습니다. 완벽해 보이는 코드(?)를 작성해서 컴파일하고 링킹해서 빌드된 결과물을 실제로 실행했건만, 의도한 대로 동작하지 않습니다. 갖가지 험악한 메시지를 뿜으며 비정상 종료되거나 조용히 아무런 출력도 없이 데드락이 걸리기도 하고, 시스템의 모든 리소스를 […]

Posted in 소프트웨어 | Also tagged , , , , , , | 3 Responses