컴파일,링크 및 운영체제(Operating System)

컴파일의 필요성

 

컴퓨터는 0 1로만 모든 명령을 이해하고 실행합니다. 우리가 ‘A’라는 문자를 입력하더라도 컴퓨터는 이것을 01로 이루어진 이진코드로 해석합니다. 그런데 ‘A’라는 문자를 어떻게 해석해줄 것인가? 또는 각 프로그래밍 언어의 문법에 맞게 작성되어 있는지 체크합니다. 이러한 기능을 컴파일 이라고 합니다.

 

컴파일의 이해

 

l  사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정이 필요합니다.

l  원시코드에서 목적코드로 바꾸어 주는 것이 컴파일이고 오브젝트 파일을 실행 파일로 바꾸는 것이 링크입니다.

l  원시코드는 우리가 작성한 코드, 목적코드는 컴퓨터가 이해할 수 있도록 번역한 코드입니다.

l  컴파일과 링크의 기능을 하는 것이 컴파일러입니다.

컴파일과링크1.png

링크(link)

 

프로젝트를 진행하다 보면 소스파일이 여러 개가 생성이 되고 A라는 소스파일에서 B라는 소스파일에 존재하는 함수(메소드)를 호출하는 경우가 있습니다. 이때 A B 소스파일 각각을 컴파일만 하면 A B에 존재하는 함수를 찾질 못하기 때문에 호출할 수가 없습니다. 따라서 A B를 연결해주는 작업이 필요한데 이 작업을 링크라고 합니다. 여러 개로 분리된 소스파일들을 컴파일 한 결과물들에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해주는 작업입니다.

 

링크는 정적 링크(static link)와 동적 링크(dynamic link)가 있는데 정적 링크란 컴파일 된 소스파일을 연결해서 실행 가능한 파일을 만드는 것이고, 동적 링크란 프로그램 실행 도중 프로그램 외부에 존재하는 코드를 찾아서 연결하는 작업을 말합니다.

 

 

빌드(Build)

 

소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정을 말합니다빌드의 단계 중 컴파일이 포함이 되어 있는데 컴파일은 빌드의 부분집합이라 할 수 있습니다빌드 과정을 도와주는 도구를 빌드 툴이라 합니다.

 

실행파일

 

실행파일(Executable File)이란 단순히 데이터만 담고 있는 파일이 아닌, 명령에 따라 지시된 작업을 수행하도록 하는 파일을 의미합니다. 프로그램을 만들 수 있는 소스 파일을 컴파일러나 어셈블러 등을 이용하여 실행 파일로 변환이 이루어집니다.

운영 체제는 파일 확장자로 실행 파일을 구분하거나, 메타데이터를 통해 파일을 인식합니다.

 

각 운영체제에 관한 실행파일은 아래 주소를 참조하십시오.

http://forensic.korea.ac.kr/DFWIKI/index.php/%EC%8B%A4%ED%96%89_%ED%8C%8C%EC%9D%BC

 

 

운영체제(Opertating System)

 

운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임입니다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다.

 

운영체제.png

운영체제의 종류

 

운영체제의 종류에는 WIndows 98, Windows10, UNIX, LINUX, MS-DOS등이 있습니다.

 

 

운영체제의 기능

 

l  프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원을 관리합니다.

 

l  자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공합니다.

 

l  사용자와 시스템간의 편리한 인터페이스를 제공합니다.

 

l  시스템의 각종 하드웨어와 네트워크를 관리, 제어합니다.

 

l  데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공합니다.

 

l  시스템의 오류를 검사하고 복구합니다.

 

l  자원 보호 기능을 제공합니다.

 

l  입 출력에 대한 보조 기능을 제공합니다.

 

l  가상 계산기 능력을 제공합니다.

 

 

 

다운로드: 2장 컴파일과링크및운영체제.pdf

 

 

 


프로그래밍을 제대로 공부해보고 싶다면, 다음 순서로 진행하시는 것을 권장합니다.

 

  1. 프로그래밍 애피타이저 시리즈
  2. [동영상] 데브기어 델파이 기초 시리즈
  3. [오프라인 강의] 델파이/C++빌더 기초 강화
  4. [오프라인 강의] 델파이/C++빌더 윈도우 프로그래밍

 

 

 

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15417
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13960
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16496
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22048
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23267
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18921
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39245
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174696
203 보안을 주제로 한 가장 훌륭한 컨텐츠 TOP 4 관리자 2021.04.20 432
202 이 달의 기술자료 - 2021년 05월 험프리 2021.04.29 432
201 엔터프라이즈 커넥터 무료 제공 (업데이트 서브스크립션 계약중인 고객 대상) 관리자 2019.10.31 432
200 이 달의 기술자료 - 2021년 03월 험프리 2021.02.26 431
199 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 6장. UI 콘트롤로 화면 만들기 관리자 2020.02.04 431
198 C++에서 루프(FOR LOOPS) 활용하기 관리자 2021.04.06 429
197 새로운 FMX 테마 - 우분투(Ubuntu) Clear Fantasy 스타일 관리자 2020.02.19 429
196 [발표자료] 2018022 마이크로서비스 아키텍처 구현과 활용 with RAD서버 file 관리자 2018.02.23 428
195 새로운 VCL 윈도우 테마 - Zircon 관리자 2020.02.14 427
194 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 2편 - 5장. 클라우드 서비스(BaaS)의 활용 관리자 2020.02.06 427
193 [10.2 도쿄] 기타 개선 사항 김원경 2017.03.24 426
192 윈도우10, 왜 그리고 어떻게 지원해야 할까요? 관리자 2019.09.04 426
191 [제품 설치 방법] 엠바카데로 본사 서버 이슈로 인해 설치가 어려운 경우 이 방법을 활용하세요. 관리자 2019.07.31 425
190 [UX Summit 요약] 감지와 응답: 지속적 파악을 통한 실제 결과를 더 좋게 하기 (Sense & Respond: Continuously Learning Our Way to Better Outcomes) 관리자 2020.12.02 424
189 RAD서버 도커(Docker) 기술 가이드 관리자 2020.02.26 423
188 델파이/C++ 프로그램 현대화 – 패스트리포트(FASTREPORT)를 활용해 윈도우 HIGH DPI 지원 버전으로 마이그레이션하기 관리자 2021.04.26 422
187 [동영상] 애플 터치 아이디 연동하기 file 험프리 2016.11.01 422
186 이 달의 기술자료 - 2017년 01월 file 험프리 2016.12.28 421
185 [고객사례-모바일 앱, 델파이] CAW+ 키보드 - 중/일, 한자 입력 및 번역 앱 file 관리자 2020.02.17 419
184 멀티-플랫폼 앱 멋지게! 쉽게! 빠르게! 완성하기 - #3 바로 커스터마이징해서 빠르게 완성하기 file 험프리 2019.07.16 419