옵션 - 해당되는 글 2건

1.---------------------------------
    gcc main.c hi.c -o test
    모든 파일이 컴파일되서 링크까지 다실행된다.
2.-----------------------------------
    gcc -c main.c                     우선 오브젝트 파일만 만들어
    gcc -c hi.c           우선 오브젝트 파일만 만들어
    gcc main.o hi.o -o test  나중에 오브젝트 파일만 컴파일한다.
3.-----------------------------------
    gcc age.c
   이렇게 했는데 마이해더가 없다고 나오는 에러등 인클루드 패스가 존재하지 않으면
   gcc age.c -lmydir  옵션주고 디렉토리 지정
4.-----------------------------------------------
   라이브러리란 오브젝트 파일을 모아둔것으로 함수 목록도 포함된다.
   라이브러리 생성하기
   gcc -c plus.c minus.c
   =====================
   ar r libmy.a plus.o minus.o
   ls
   libmy.a minus.c minus.o plus.c plus.o
   ==========================
   ar s libmy.a
5.------------------------------------------
   -l 기능 표준 라이브러리가 아닌 라이브러리를 지정한다.
   -gcc 소스 파일 이름 -l라이브러리 이름
 
   gcc 16_8.c -lm
6.---------------------------
   옵션
   gcc 16_9.c -lmy -Lmylib
   L라이브러리 위치를 표시한다. L은 복수로 사용이 가능하다. 경로도 절대로 지정도 가능하다.
7.-----------------------------
   프로그램이돌다가 죽어버리면 정상적인 방법으로 스택을 살펴볼수가없기 때문에
   -g1을 사용해서 역추적 스택 덤프 생성에 필요한 정보를 포함한다
      리눅스  |  2007. 9. 6. 10:59




.c =>   cpp 전처리  => 컴파일 cc   =>  어셈블 as   =>  링크 ld   => a.out
 전처리 소스파일에 전처리 파일 삽입 - 앞에 샾붙은것들처리
컴파일단계 어셈블리어로 바꾸고
어셈블단계는 어셈블러를 기계어로 바꾸고 오브젝트 파일 생성
링크단계 메모리 맵설정에 따라서 각각 메모리 주소 설정

-E 전처리만 실행하고 컴파일 중단
-c 링크수행하기 바로 전단계에서 수행을 멈춘다 .o파일이 나온다
-o 출력팡리 이름을 적어준다.
-I 헤더파일을 컴색하는 디렉토리 목록을 추가한다. 인클루드 패스를 지정할수있다.
-l 라이브러리 파일을 컴파일시 링크한다.
-g 바이너리 파일에 표준 디버깅 정보를 포함하다. 이옵션을 주어야 디버깅정보가 포함되서
 디버깅할때 c소스 레벨에서 디버깅을 하게된다.
-ggdb 바이너리파일에 GNU디버거인 gdb만이 이해할수있는 많은 디버깅 정보를 포함시킨다.
-O 컴파일 코드를 최적하시킨다. 옵티마이 제이션
-O n  여기에 숫자를 넣으면 최적화를 시킬수있다. 0은 최적화 시키지않는다는의미이고 숫자가 높을 수록 최화된다.
             1-3까지 줄수있는데 보통 2까지 준다.
-DFOO=RAR 명령라인에서 -D옵션에 의미가 있는것이지 FOO=RAR은 응용
       D를 쓰고 FOO라는 선행처리기로 매크로를 정의한다.
                             예 -D__ABC이렇게 하면 소스상에서 샵디파인 으로 정의를 안해도 정리가된다,.
-static 정적라이브러리에 링크한다.
 정적라이브러리에 링크하면 파일사이즈가 커진다.
 동적라이브러리는 메모리에 항상 상주에있는 라이브러리
 라이브러리의 코드가 컴파일 되지 않고 단순히 주소만 맵핑되서 크기가 작다.
 정적라이브러리는 라이브러리코드가 컴파일 되서다 들어간다. 하나의 실행파일로 완성
 프린트에프가 동적라이브러리에 링크되어있으면 여러분이 작성한 실행파일에는 없고
 여러분이 작성 한 코드가 실행되다가 프린트 에프가필요하면 로딩해서 돌린다.
 정적라이브러리는 라이브러리 파일이 동일하게 따로 있는데
 프린트에프의 코드까지 하나의 파일로 가지고 간다.

 동적:gcc컴파일러 버전에 영향을 받을수있고 어떤상황에선 영향을 받아서 영향을받을수있다

 정적:코드까지 다가지고 가기 때문에 gcc컴파일러 버전에 영향을 받지 않고 실행이 가능하다.
-ansi 표준과 출동하는 GNU확장안을 취소한다.

      리눅스  |  2007. 9. 6. 10:20



sokoban's Blog is powered by Daum & Tattertools