c 컴파일 과정

C & Python 2015. 7. 11. 00:13

c 컴파일 과정

  1. 소스코드 작성

    편집기, 개발도구 등을 이용하여 소스 코드 작성

  2. pre process

    컴파일러가 소스코드를 해석, "*.i" 파일 생성

    $ gcc -E -o test.i test.c
    $ ls
    test.c test.i
    

    파일명을 지정하지 않으면 화면에 코드 출력

    $ gcc -E test.c
        //화면에 코드 출력
    $ ls
    test.c
    
  3. 어셈블리 코드 생성

    해석된 소스코드를 어셈블리 코드로 변환, "*.s" 파일 생성

    $ gcc -S test.c
    $ ls
    test.c test.s
    
  4. 오브젝트 파일 생성

    변환된 어셈블리 코드를 기계어로 변환, "*.o" 파일 생성

    $ gcc -c test.c
    $ ls
    test.c test.o
    
  5. 링커

    기계어로 변환된 오브젝트 파일을 OS 등이 제공하는 기능들(라이브러리)과 연결하여 실행이 가능하도록하는 과정

  6. 실행파일 생성

    링커 단계를 거쳐 실행 가능한 파일 생성

    $ gcc -o test test.c
    $ ls
    test test.c
    

    파일명을 지정하지 않으면 a.out으로 생성

    $ gcc test.c
    $ ls
    a.out test.c
    


소스에 math.h 헤더파일이 include되어있고 컴파일시 수학 라이브러리를 링크하도록 지정할 경우
라이브러리 링크 옵션(-lm)을 뒤에 쓸 것(앞에 쓰면 우분투 계열에서는 링크가 되지 않음, 이유는 모름)
수학 라이브러리 파일의 파일명을 보면 "libm..."으로 되어 있고 컴파일 옵션에서 "lib"를 생략한 "m"만 사용, "-l"이 옵션이고 "m"은 라이브러리 이름

$ gcc -o test test.c -lm
$ ls
test test.c
$ ldd test
    //실행파일 test에 연결된 라이브러리 정보 출력

'C & Python' 카테고리의 다른 글

c 포인터변수  (0) 2015.06.28
python 2.7 한글 출력  (0) 2015.06.28
: