C & C++/C in Linux

[C in Linux] start C

  • -
728x90
개발환경 : WSL(Window Subsystem for Linux), Mac OS
에디터 : Vim(Vi Mproved)
컴파일러 : gcc (GNU Compiler Collection)
참조 : https://www.joinc.co.kr/w/Site/C/Documents/CprogramingForLinuxEnv/Ch3_StartC

 

C 프로그램의 구조

  1. 프로그램은 하나 이상의 함수로 이루어진다.
  2. 반드시 하나의 main함수를 포함해야 한다.
  3. 함수는 서로 독립적인 관계에 있다.

함수(Function)

	 입력 데이터
    +--\ /--------------+
    |                   |
    |                   |
    +-----------/ \-----+
             출력결과

위의 이미지는 함수의 개념을 전형적으로 설명해주고 있다. 이미 초등학교때 소개된 개념이다.  

 

함수는 어떤 데이터 셋을 집어 넣으면 필요한 연산을 해서 출력 결과를 되돌려준다. 함수는 다음과 같은 구조를 가진다.  

return type function_name(argument)
{
   // 코드
}
  1. return type : 출력 데이터의 형(type)를 지정해 준다.
  2. function_name : 함수의 이름으로 각 함수는 이름으로 구분되며, 이름으로 사용할 수 있다.
  3. argument(인자) : 함수에 넘겨지는 값이다.
  4. 함수 코드 : 함수의 본체부분으로 인자를 받아서 연산을 하고 결과값을 되돌려준다.

main 함수

main 함수는 특별한 종류의 함수이며, 프로그램이 시작되는 지점이다. 모든 C 프로그램은 반드시 하나의 main 함수를 포함하고 있어야만 한다. 다른 함수와 마찬가지로 return type, function name, argument의 3요소로 이루어져 있다.

 

 

C 프로그램이 만들어지는 과정  

인간이 이해하기 쉬운 C언어를 이용해서 프로그램을 만들었다면, 이를 컴퓨터가 이해할 수 있는 기계어 파일로 번역해서 컴퓨터가 실행할 수 있는 실행파일의 형태로 만들어야 한다. 이러한 일을 하는 프로그램을 컴파일러라고 한다. 이미 우리는 hello world 프로그램 예제를 통해서, 컴파일러를 이용해서 실행파일을 만들고 이를 실행시키는 방법에 대해서 알아보았다. 여기에서는 어떠한 과정을 거쳐서 실행파일이 만들어지는지에 대해서 알아보도록 하겠다.

 

  1. 소스 코드 생성
    1. 인간이 이해할 수 있는 언어로 프로그램을 작성한다. 이것을 소스코드라고 하는데, 여기에는 컴퓨터에게 내릴 명령들이 포함되어 있다. 소스코드는 인간이 쉽게 이해할 수 있지만, 컴퓨터는 이해할 수 없기 때문에 컴퓨터가 이해할 수 있도록 번역하는 과정이 필요하다.
  2. Pre processor
    1. 컴파일러를 실행시키면 가장 먼저 pre compile를 수행한다. 프로그래머가 생성한 소스코드는 인간이 보다 쉽게 읽을 수 있도록 하기 위해서 include나 매크로등을 이용해서 코드가 축약되어 있다. pre compile는 축약된 내용을 컴파일러가 쉽게 해석할 수 있도록 풀어쓰는 과정이다.
  3. Assembly 코드의 생성
    1. 이제 풀어쓴 코드를 가장 원시적인 언어의 형태인 Assembly(:12)코드로 만들어준다. 어셈블리코드는 기계어와 1:1로 대응되기 때문에 일단 어셈블리코드로 성공적으로 만들어낸다면 쉽게 기계어형태로 변환할 수 있다.
  4. Object 파일의 생성
    1. Assembly 코드가 만들어졌다면, 이제 이걸 기계어로 변환한다. 이렇게 해서 만들어진 파일을 object파일이라고 한다.
  5. linker
    1. 그러나 object파일이 생겼다고 바로 실행될 수 있는게 아니다. 프로그램으로써 실행하기 위해서는 운영체제가 제공하는 다른 여러가지 객체(기능)들과 연결(link)되어야 한다. link과정을 거치면 비로서 실행가능한 완전한 프로그램이 만들어지게 된다.
728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.