블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday


    컴파일러란

    소스파일 → 전처리기(Preprocessor) .i→ compiler .s→ assembler .o(유닉스) or .obj(윈도-object의 약자)→ linker → 실행파일 .exe


    컴파일 과정

    소스( .c) → 전처리 (.i) → 컴파일(.s) → 어셈블러(.o or .obj) → 링크/링킹 → 실행파일 (.exe)     ※ 밑줄 부분은 컴파일 과정에서 중간 파일이 생겼다가 지워진다.


    GCC(GNU C COMPILER) → 리눅스 환경에서 컴파일을 해주는 프로그램


    gcc -o 실행파일.exe first.c

    gcc -o(실행파일을 만들어라) (이름지정).exe first.c(컴파일할 소스)


    ./(실행파일명)을 입력하면 출력된다.


    중간 파일을 삭제하지 않고 보여주는 방법.

    # gcc -v [--save-temps] -o test2 first.c


    -v → 컴파일 과정을 화면에 출력한다.

    --save-temps → 컴파일 과정에서 생성되는 중간 파일인 전처리 파일(*.i)과 어셈블리 파일(*.s)를 지우지 않고 현재 디렉토리에 저장한다. 컴파일 과정의 에러를 분석할 때 사용.

     


     

    gcc -v [--save-temps] -o test2 first.c 명령으로 컴파일 한 후 출력해본 화면.

    해당 디렉토리에 .i .s .o 의 파일과 실행파일이 생성되었다.


    gcc 실행파일 생성 과정.

    c 파일명을 abc.c  라고 가정하면 $gcc -o abc  abc.c 를 실행해서 abc  라는 실행 파일을 만드는 과정은 아래와 같다.

    (cc1(컴파일러) 과 collect2(링커) 가 존재하는 위치는 gcc 버전마다 조금씩 다르다.)


    1. 전처리  (abc.i  파일 생성)

     $cpp abc.c abc.i


    2. 컴파일 (abc.s  어셈블러 파일 생성)

     $/usr/lib/gcc/i486-linux-gnu/4.0.2/cc1 abc.i


    3. 목적코드 생성( abc.o 오브젝트 파일 생성)

     $as -V -Qy -o abc.o abc.s


    4. 링킹 (ELF)





    비주얼 C의 cl 컴파일 과정


    cl 파일명 /FA()  →  ().asm파일 생성

    cl 파일명 /P → 파일 전처리 결과 쓰기

    .obj 파일은 그냥 생성됨.

    ※ 옵션 대문자

     

     

    cl 실행파일 생성 과정.

    c 파일명을 main.c  라고 가정하면

    1. cl main.c /P를 실행해서

      전처리  (main.c  파일 생성)

    2. cl main.c /FA를 실행해서

      컴파일 (main.asm 어셈블러 파일 생성)

    3. cl main.c 를 실행해서

      목적코드 생성(main.obj 오브젝트 파일 생성)

    4. 링킹 (ELF)

    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함