BLOG ARTICLE 링크 | 2 ARTICLE FOUND

  1. 2008.11.14 iPhone 어플리케이션 개발을 위한 준비 - 3. 관련 자료 (19)
  2. 2007.06.04 2. 소스코드, 컴파일, 링크 (6)

3. 관련 자료

* 한글 자료와 영어
아쉽게도 이곳에서 소개하는 대부분의 자료들은 영문으로 되어 있습니다. 아이폰과 관련되어 나온 번역서적은 아직까지는 한권도 없습니다. (준비하고 있다는 이야기는 들었습니다) OS X 코코아 프로그래밍에 관련된 내용인 코코아 프로그래밍이란 책이 유일하게 번역되어 나온 관련 서적입니다.


코코아 프로그래밍
카테고리 컴퓨터/IT
지은이 아론 힐리가스 (인사이트, 2007년)
상세보기

아직까지는 코코아 프로그래밍이 대중화 되지 않아 한글로된 자료가 적지만, 점점 많아질 것으로 보아집니다. 하지만 빠르고 다양한 자료를 얻기 위해서는 영문 자료를 보시는 수 밖에 없습니다. 저도 모자라는 영어로 괴롭지만 자꾸 보다보면서 조금씩 익숙해지고 있습니다. 저같이 영어 공부를 게을리 하신 분들은 따로 영어를 공부하실 필요 없이 영문자료로 공부를 하셔도 좋을 것 같습니다.

* ADC (Apple Developer Connection)
사실 맥/아이폰 프로그래밍에 관한 자료를 구하는 곳은 사실 딱 한 곳, ADC만 알고 있어도 됩니다. 이곳에는 애플에서 제공하는 OS X 개발과 관련된 다양한 문서와 자료, 동영상, 소스코드들이 있습니다. 자료가 방대하지만 이곳을 문지방이 닳도록 드나드시며 근본적인 자료들을 보시는 것이 늦어 보이지만 빠른 길입니다.


1) 관련 사이트
맥/아이폰 개발과 관련된 국내외 사이트들과 블로그들입니다. 국내 사이트들도 아직은 다른 일반적인 개발환경에 비해서 자료와 회원들이 많지는 않습니다. 하지만 비슷한 관심분야를 가진 분들과 교류를 할 수 있고, 궁금하신 점들을 올리고 다른 분들의 의견이나 해답을 들을 수 있습니다. 아무래도 같은 한국어로 이야기하는 것이 명확하고 친근할 것 같습니다.

2.1) 사이트
* 국내

* 국외
  • Apple Developer Connection - 애플에서 제공하는 개발자 지원 서비스입니다.
  • Apple Discutssions - Developer Forum - 애플에서 제공하는 개발자 포럼입니다.
  • iPhone Development Forum - 애플의 아이폰 개발자 포럼이며, 현재는 개발자 프로그램에 등록된 회원만 접근할 수 있습니다.
  • Cocoalab - Become An Xcode란 문서로 유명한 사이트이며 관련 강좌와 소스들을 제공합니다.
  • iPhone Development Centra - 아이폰 개발에 관련된 튜토리얼, 포럼을 제공합니다.
  • iPhoneWebDev - 아이폰용 웹사이트 개발에 관련된 예제, FAQ를 제공합니다.
  • Cocoabuilder.com - Cocoa와 Xcode에 관련된 메일링 리스트를 제공합니다.
  • Apps Amuck - 31개의 아이폰 튜토리얼과 샘플코드를 제공합니다.
  • Cocoa Dev Central - 코코아 튜토리얼과 관련 링크들을 제공합니다.
  • CS 193E - 스텐포드 대학에서 제공하는 코코아 프로그래밍 강좌입니다.
  • CS 193P - 스텐포드 대학에서 제공하는 아이폰 프로그래밍 강좌입니다.

2.2) 블로그

아래는 맥, 아이폰 개발 관련 블로그들입니다. RSS로 등록해 놓으시면 유익하고 재미있는 포스팅들을 편하게 구독하실 수 있습니다.


이외에 Xcode, Cocoa, 맥프로그래밍 관련 국내외 사이트란 포스팅도 참고하세요.

2) 관련 서적
다음은 Cocoa, Objective-C, 맥/아이폰 개발에 관련된 서적들입니다. '코코아 프로그래밍'을 제외하고는 모두 원서이므로 아마존과 같은 외국 사이트 또는 국내의 구매대행 서비스를 하는 온라인 쇼핑몰에서 구입을 하셔야 합니다.

맥에서의 개발이든 아이폰에서의 개발이든 공통적으로 Xcode/인터페이스빌더의 사용법과 Objective-C, 파운데이션 프레임워크에 관해서 알고 있어야 합니다. 그렇기 때문에 당장 시작을 할 수는 없지만, 초반에 기본을 익히는데는 맥 프로그래밍 서적을 보셔도 큰 상관은 없을 것 같습니다.


* 코코아 프로그래밍
- 가격: 22,000원
- 출판: 인사이트
- 역자: 박진형

위에서 언급했던 현재까지 유일한 번역서적입니다. 코코아 프로그래밍에 관한 기본적인 사항을 익히기에 아주 좋은 책이지만, Xcode 2.*를 중심으로 소개하고 있기 때문에, 초보자들이 보기에는 Xcode 3.*을 사용하면서 약간의 차이점 때문에 혼돈되는 부분이 있습니다.


* Cocoa Programming for Mac OS X
가격: $31.49
출판: Addison-Wesley Professional
저자: Aaron Hillegass

아론 힐리가스가 쓴 코코아 프로그래밍의 가장 대표적인 서적입니다. 아이폰이 아닌 맥 프로그래밍에 관한 내용이지만 Xcode, 인터페이스 사용법과 Objective-C등 기본적인 내용을 익히기에 좋은 책입니다. 


* Xcode 3 Unleashed
가격: $26.99
출판 Sams
저자: Fritz Anderson

Step into Xcode의 다음 버젼으로 이전과는 달리 깔끔한 디자인으로 Xcode 3에 맞추어 새로 발간된 책입니다. 위의 아론 책과 유사한 입문서적인데 툴 로서의 Xcode 3 사용법에 치중하였습니다. 칼라로 되어 있기 때문에 보기에 편하고 좋습니다.


* Programming in Objective-C 2.0
가격: $26.69
출판: Addison-Wesley Professional
저자: Stephen G. Kochan

Objective-C 언어에 대한 책입니다. 저는 1.0 버젼을 가지고 있어 정확히 내용은 어떻게 변경되었는지는 모르겠습니다. Objective-C에 대해 체계적으로 공부하기에 좋은 책이며, 책의 절반 가량은 코코아에서 사용하는 파운데이션 프레임워크에 관해 설명하고 있습니다.


* The iPhone Developer's Cookbook
가격: $27.62
출판: Addison-Wesley Professional
저자: Erica Sadun

저도 읽은 적은 없지만 아이폰에서의 개발을 따라 해 볼 수 있는 좋은 책이라고 들었습니다. 쿡북이란 제목처럼 실제로 사용할 수 있는 다양한 소스들을 참조하고 따라해 볼 수 있을 것 같습니다.

(이미지 출처:아마존)

지금은 원서도 많지는 않지만 앞으로는 아이폰 개발에 관련된 책들이 많이 나올 것으로 보입니다. 새로 나온 iPhone, Cocoa 관련 책과 저자들이란 포스팅에서 신간 혹은 새로 나올 관련서적을 확인하실 수 있습니다.

3) 관련 문서
ADC에서는 OS X 개발에 기본이되는 많은 문서들을 제공하고 있습니다. 또한 많은 문서들은 pdf 버젼으로 다운로드 받을 수 있습니다. 자주 참조하는 문서들은 pdf 문서로 다운로드를 받아 편하게 읽어 볼 수 있습니다.

3.1) Getting Started 문서
제목 그대로 애플에서 제공하는 맥/아이폰 개발을 처음 시작하는 입문자를 위한 문서들입니다. 이 문서들은 요점만 제공하기 때문에 내용이 짧아 부담없이 읽어 보실 수 있습니다.

* Mac
ADC의 Gettting Started with Apple Technologies 란 문서를 보시면 맥 OS X 개발을 위한 다양한 자료와 링크를 확인하실 수 있습니다. 또한 세부 항목별로 Getting Started with *와 같은 링크를 제공하기 때문에 관심있는 분야별로 보다 상세하게 확인하실 수 있습니다.

* iPhone
iPhone Dev Center에서는 시작 페이지에서 아래와 같은 문서의 링크를 제공합니다. 각 문서들은 로그인 후에 접근할 수 있습니다.


3.2) Objective-C

3.3) Xcode & Cocoa

  • What's New in Xcode - Xcode 3.0과 3.1에서 업그레이드된 사항들입니다.
  • Xcode Workspace Guide - 툴로서 Xcode 사용법에 관한 메뉴얼입니다.
  • Xcode Overview - Xcode에 대한 간단한 설명과 함께 관련내용에 대한 세부 링크를 제공합니다.
  • Become An Xcoder - 처음 코코아 프로그래밍을 시작하는 사람들을 위한 튜토리얼입니다.
  • Cocoa Fundamentals Guide - 코코아 프레임워크에 관련된 전반적인 내용을 제공합니다.
  • Cocoa Application Tutorial - 간단한 코코아 어플리케이션을 만들어 보는 상세한  튜토리얼을 제공합니다.
  • Foundation Framework Reference - 코코아 프로그래밍을 위한 NS로 시작되는 다양한 파운데이션 프레임워크의 클래스들에 대한 설명 과 기본적인 함수, 데이터타입과 상수들에 대한 문서입니다. Xcode의 도움말에서도 확인하실 수 있으며, 제공하는 클래스들을 둘러 보기에 좋은 문서입니다.
  • Application Kit Framework Reference - AppKit은 위의 파운데이션 프레임워크와 함께 코코아 프로그래밍의 핵심 프레임워크로, 사용자 인터페이스(UI)를 위한 프레임워크입니다. 코코아에서 제공하는 다양한 사용자 UI 클래스들을 볼 수 있는 문서입니다.

3.4) 아이폰
ADC에서 아이폰 개발과 관련된 문서들은 링크는 가능하지만, 로그인 하지 않으면 메인 페이지에서 접근할 수 없는 정책에 따라 링크는 제공하지 않습니다. 하지만 아이폰 관련문서는 많지 않기 때문에 iPhone Dev Center로 로그인 후에 쉽게 찾으실 수 있습니다.

애플의 iPhone DevCenter의 메인화면에서 우측하단을 보면 iPhone Reference Library 색션에서 Required Reading 항목을 보면 아래와 같은 세개의 문서가 있습니다. 애플에서도 권장하는 기본적인 문서인만큼 꼭 읽어 보시는 것이 좋습니다.



이상 맥/아이폰 개발을 위한 자료들과 관련 사이트들을 간단히 알아 보았습니다. 급하게 써내려가서 빠지거나 틀린 내용들이 많이 있을 것 같습니다. 이는 추후에 수정해 나가겠습니다.

다음에는 마지막으로 아이폰 프로그래밍을 시작하는 방법에 대해 주관적인 제 생각을 포스팅 해 보겠습니다.
* 관련링크
iPhone 어플리케이션 개발을 위한 준비 - 1. 하드웨어
iPhone 어플리케이션 개발을 위한 준비 - 2. 소프트웨어
iPhone 어플리케이션 개발을 위한 준비 - 3. 관련 자료
iPhone 어플리케이션 개발을 위한 준비 - 4. 시작하기


이번에는 C언어를 이용하여 실행할 수 있는 파일을 만드는 관정에 대해서 알아보겠습니다. 일반적으로 아래와 같은 과정으로 작성한 소스 파일이 실행파일로 만들어집니다.
사용자 삽입 이미지
지금부터 위의 내용에 대하여 알아 보겠습니다.


2.1 소스코드 작성

1) 소스 코드?

코드는 프로그래밍 언어에 따라 작성된 내용을 의미합니다. 일반적으로 많이 사용되는 코딩이란 말은 코드를 작성하는 작업을 말하며, 에디터에서 소스 파일을 작성하는 것을 의미합니다.

소스란 재료라는 본래 의미와 마찬가지로 컴파일을 하여 실행파일을 만들어 내기 위해 필요한 소스(재료)란 의미입니다. 최종 목적 파일을 만들기 위해 필요한 모든 파일들을 소스파일이라 하고, 일반적인 소스 파일은 C 코드가 들어 있는 파일을 의미합니다.

C에서 헤더파일은 *.h, 소스파일 *.c의 확장자를 갖습니다.


2) 통합 개발 툴

많은 개발툴들이 IDE(Integrated Development Environment)라고 불리우는 통합 개발 환경을 제공합니다. 이는 컴파일러, 링커, 에디터, 디버그, UI 에디터, 메뉴얼 등 개발에 필요한 도구들을 모아 놓은 개발툴입니다. 맥에서는 Xcode, 윈도우에서는 VisualStudio 등이 있습니다.

사용자 삽입 이미지
일반적으로는 개별 텍스트 에디터를 사용하는것 보다, IDE에서 제공하는 에디터를 사용하는 것이 가장 편리합니다.

좌측 이미지는 맥의 대표적인 개발환경인 Xcode의 모습이며, 개발에 편리를 주는 많은 기능을 내장하고 있습니다.




3) 디버깅

디버깅이란 프로그램 실행 시 나오는 각종 오류들을 제거하는 작업을 의미합니다. 이를 위해 많은 개발환경에서 디버거란 디버깅을 도와주는 편리한 툴들을 제공합니다.

아래는 Xcode에서 디버거를 실행중인 모습니다.  코드를 한 줄씩 또는 브레이크 포인트라고 불리우는 위치까지 실행시켜 가면서 각종 변수 값들과 메모리를 등을 확인할 수 있습니다.
사용자 삽입 이미지

사용하는 툴의 디버거 사용방법을 반드시 알아두어야, 원인을 찾기 어려운 오류를 추적하고 제거하는 시간을 단축할 수 있습니다.


2.2 컴파일
컴파일이란 작성한 소스파일을 이진파일로 바꾸어 주는 작업을 의미합니다. 쉽게 이야기 하면 사람이 작성하고 편집할 수 있는 소스 파일을 컴퓨터가 이해할 수 있도록 바꾸어 주는 작업을 말합니다.

1) 목적파일

C 컴파일러는 *.c 소스 코드를 컴파일 하여, 목적파일(object file)이라 불리우는 *.o, *.obj 등의 컴파일된 파일을 생성합니다. 이 파일들은 바로 실행을 할 수 없지만, 컴파일 다음 작업인 링크에 사용되어 실행 파일을 만듭니다.

아래 좌측은 소스 파일이며, 사람이 이해가 가능합니다. 우측은 컴파일한 목적파일로 짐작이 가는 문자들이 있지만 사람이 이해할 수 없습니다. 반대로 기계는 우측의 목적파일이 이해(처리)하기 쉽습니다.
사용자 삽입 이미지사용자 삽입 이미지


2) 디버그 모드와 릴리즈 모드

사용자 삽입 이미지
대부분의 IDE들은 빌드 시 디버그 모드와 릴리즈 모드를 선택할 수 있습니다.

디버그 모드는 개발에 편리를 주기 위해서 많은 디버깅에 편리한 코드들이 들어갑니다. 그렇기 때문에 릴리즈 모드에 비해 실행파일도 크고 속도도 느리지만,  디버깅 작업을 하기에는 편합니다.

릴리즈 모드는 디버깅에 필요한 모듈을 제외되고 컴파일되기 때문에, 디버깅 모드에 비해서 실행파일 크기가 작고 속도가 빠릅니다.

개발시에는 편리를 위해 디버깅 모드로 작업을 하고, 최종 배포시에는 릴리즈 모드로 컴파일 하여 배포 합니다.


3) 오류(error)와 경고(warning)

컴파일을 하다 보면 오타와 잘못된 문법으로 인해 오류와 경고를 만나게 됩니다. 오류는 잘못된 코딩으로 인해 컴파일을 할 수 없는 경우를 의미합니다. 경고는 컴파일은 되지만 문제가 일어날 소지가 있을 경우에 나오는 메시지입니다.

사용자 삽입 이미지
좌측을 보면 오류 하나와, 경고 하나가 나오고 컴파일이 중지 되었습니다.

printf 함수 뒤에 있는 C 문법에 어긋난 hi로 인해 오류가 났습니다. 경고는 int a;라고 변수를 선언은 해놓고 사용은 하지 않았다는 경고입니다.



컴파일을 하기 위해선 경고가 있어도 가능하기 때문에 처음 프로그래밍을 시작하는 분들은 경고를 무시하는 경우가 있는데, 경고도 무조건 제거하여야 합니다. 경고를 제거하는 것은 예기치 못한 동작에 대한 위험을 줄이고, 안쓰는 변수 제거 및 확인, 정확한 형 변환 등 올바른 코딩습관을 가지게 해줍니다.

2.3. 링크
실행파일을 만들기 위해서는 컴파일 뒤에 링크 라는 작업이 필요합니다. 링크는 컴파일된 목적파일과 필요한 라이브러리를 이용해, 해당 시스템에서 실행할 수 있는 파일을 만듭니다.

일반적으로 링크는 아래와 같은 작업을 수행합니다.
사용자 삽입 이미지


1) 라이브러리

이전 소스와 같이 printf를 사용하면, 이 함수는 어딘가 반드시 구현되어 있어야 합니다. printf는 C 표준 라이브러리에 포함되어 있으며, 실행파일에 이 라이브러리도 포함되어야 실행시 printf를  호출하여 사용할 수 있습니다.

라이브러리는 자주 사용되는 함수, 모듈들을 미리 컴파일 시켜 놓은 목적파일의 집합체로 생각하시면 됩니다. C 함수들은 C 표준 라이브러리에 들어 있습니다.

라이브러리는 사용자도 만들 수 있으며, 자주 사용되는 코드들을 용도 별로 모아 라이브러리를 구축해 놓으면 다음 개발 시에 관련 파일의 복사나 재 컴파일 등의 작업 없이 편리하게 사용할 수 있습니다.


2) 라이브러리의  종류

여기서 한가지를 보면 항상 라이브러리가 실행파일에 포함된다는 것 입니다. 이는 실행파일 크기가 증가 한다는 이야기이고, 프로그램 실행 시 메모리도 많이 사용하게 된다는 의미입니다.

실행파일에 포함되는 라이브러리를 정적(static) 라이브러리라고 합니다. 같은 정적 라이브러리를 사용하는 프로그램이 많을수록 하드웨어, 메모리 같은 시스템 낭비를 초래 합니다. 그래서 나온 것이 공유(shared), 런타임(runtime) 라이브러리를 사용하는 것 입니다.

여러 실행파일들은 라이브러리에 대한 정보만 가지고 있고, 한 라이브러리를 같이 사용하기 때문에 위의 하드웨어나 시스템자원 사용에 있어 이익을 가지고 옵니다. 아래의 그림을 보면 공유 라이브러리를 사용하는 것이 정적 라이브러리 사용에 있어서 파일용량이나 메모리를 절약할 수 있음을 보여 줍니다.
사용자 삽입 이미지


3) 오류(error)

컴파일과 마찬가지로 링크도 오류과 경고를 알려 줍니다. 오류가 발생하면 실행파일은 생성되지 않습니다. 컴파일과 마찬가지로 링크도 모든 오류과 경고를 확인하고 제거하여야 합니다.

일반적으로 링크 오류는 소스코드에서 사용한 변수나 함수들을 링크시에 다른 목적파일 또는 라이브러리에서 실제 구현된 변수나 함수를 찾을 수 없을 경우 발생합니다.

사용자 삽입 이미지
좌측은 컴파일까지는 성공하였으나 링크 시 오류가 발생한 경우 입니다.

extern이란 예약어로 컴파일러는 something이란 변수가 어디선가 선언되어 있다고 예측하고 컴파일을 완료 합니다.

링크 시에는 something이 선언되어 있는 곳을 찾을 수 없기 때문에 오류를 내고 링크를 중지합니다.

관련 목적파일, 라이브러리를 링크 옵션에 포함시켰는지, 선언은 되었는데 구현은 되지 않았는지, 이름과 타입이 동일하진 여부를 확인하셔야 됩니다. (선언과 구현은 나중에 설명하겠습니다.)
이상 프로그래밍과 관련된 몇가지 자주 쓰이는 용어들을 살펴 보았습니다.  다음 장 부터 본격적으로 C 언어에 대한 설명을 시작하겠습니다.


'프로그래밍 강좌 > C 언어 기초' 카테고리의 다른 글

6. 제어문  (0) 2007.06.14
5. 연산자  (0) 2007.06.13
4. 변수  (2) 2007.06.12
3. C 기초문법  (0) 2007.06.05
2. 소스코드, 컴파일, 링크  (6) 2007.06.04
1. C언어 공부를 위한 준비  (9) 2007.06.03