GCC 컴 파일 의 일반적인 기능 사용

(1)gcc 가 여러 개의 분립 원 파일 에 대한 컴 파일(-c,-o)
$ls
test.h test.c main.c
$gcc -c test.c -o test.o #      test.o
$gcc -c main.c -o main.o #      main.o
$gcc test.o main.o -o main #     main     

(2)gcc 동적 링크 라 이브 러 리 의 컴 파일(-shared,-fpIC,-L)
$ls
test.h test.c main.c
$gcc -c test.c -o #      test.o
$gcc -shared -fPIC test.o -o libtest.so #           
$gcc main.c -L. -ltest -o main #          main     
#   libtest.so    ./lib/ , 
$gcc -shared -fPIC test.o -o ./lib/libtest.so #           
$gcc main.c -L ./lib -ltest -o main #          main     

\#주의:
-L.현재 디 렉 터 리
-fpIC 매개 변 수 는 컴 파일 단계 에 작용 하여 컴 파일 러 에 위치 와 무관 한 코드(Position-independent Code)를 생 성하 면 발생 하 는 코드 에 절대 주소 가 없고 모두 상대 주 소 를 사용 하기 때문에 코드 는 메모리 의 임의의 위치 에 로드 되 어 올 바 르 게 실 행 될 수 있 습 니 다.이것 은 바로 공유 라 이브 러 리 가 요구 하 는 것 입 니 다.공유 라 이브 러 리 가 불 러 올 때 메모리 의 위치 가 고정 되 어 있 지 않 습 니 다.
(3)동적 링크 라 이브 러 리 사용
 1)암시 적 사용
#1  ln    so     /usr/lib  /lib          
$ln -s /usr/test/lib/*.so /usr/lib
$ldconfig
#2   LD_LIBRARY_PATH
$export LD_LIBRARY_PATH=/usr/test/lib :$LD_LIBRARY_PATH
$ldconfig
#3   /etc/ld.so.conf
  #@1   vim  
   $vim /etc/ld.so.conf
   #     /usr/test/lib       
   $ldconfig
  #@2       
  $echo "/usr/test/lib" >> /etc/ld.so.conf
  $ldconfig

 2)명시 적 사용
프로그램 에서 dlopen,dlsym,dlclose 시리즈 함수(\#include)를 명시 적 으로 호출 합 니 다.자세 한 설명 은 없습니다.
(4)gcc 정적 라 이브 러 리 의 컴 파일 과 사용(-static,ar)
$ls
test.h test.c main.c
$gcc -c test.c -o #      test.o
$ar crv libtest.a test.o #     libtest.a
a - test.o
$gcc main.c libtest.a -o main #          main     
($gcc main.c -static -ltest -o main) #       
#   libtest.a    ./lib/ , 
$ar crv ./lib/libtest.a test.o #     libtest.a
a - test.o
$gcc main.c ./lib/libtest.a -o main #          main     
($gcc main.c -L ./lib -static -ltest -o main) #       

\#주의:
AR 명령 은 라 이브 러 리 를 만 들 고 수정 하 는 데 사용 할 수 있 습 니 다.
c:라 이브 러 리 를 만 듭 니 다.라 이브 러 리 가 존재 하 든 없 든 생 성 됩 니 다.
r:라 이브 러 리 에 모듈 삽입(교체).삽 입 된 모듈 이름 이 라 이브 러 리 에 존재 하면 같은 이름 의 모듈 을 교체 합 니 다.
v:이 옵션 은 실행 옵션 의 추가 정 보 를 표시 합 니 다.
(5)경고 옵션 을 컴 파일 하 는 동시에 경고 기록 을 파일 에 출력 합 니 다(-Wall 과 2,-Warror,-pedantic)
#                b  
$ls
test.h test.c main.c
$gcc -c test.c -o test.o -Wall 2> debug.txt
c:4: warning: unused variable 'b'
$cat debug.txt
c:4: warning: unused variable 'b'
#           ,   -Werror  ,            
$gcc -Werror -c test.c -o test.o
#pedantic                 ANSI/ISO C     
$gcc -pedantic -c test.c -o test.o

(6)헤더 파일 의 경로 지정(-I)
$gcc –c –I /usr/dev/mysql/include test.c –o test.o

(7)어 셈 블 리(-E,-S)
#   ,          test.c 
$gcc -E test.c -o test.i($gcc -E test.c)
#      
$gcc -S test.i -o test.s
#           
$gcc -c test.s -o test.o

(8)튜 닝(-g)
$gcc -c test.s -o test.o

기타
gcc 명령 의 일반적인 옵션
옵션 설명
-ansi 는 ANSI 표준 C 문법 만 지원 합 니 다.이 옵션 은 GNU C 의 일부 특색 을 금지 합 니 다.
예 를 들 어 asm 또는 type:of 키워드.
-c 대상 파일 만 컴 파일 하고 생 성 합 니 다.
-DMACRO 는 문자열'1'로 MACRO 매크로 를 정의 합 니 다.
-DMACRO=DEFN 은 문자열'DEFN'으로 MACRO 매크로 를 정의 합 니 다.
-E 는 C 프 리 컴 파일 러 만 실행 합 니 다.
-g 디 버 깅 정보 생 성.GNU 디 버 거 는 이 정 보 를 이용 할 수 있 습 니 다.
-DIRECTORY 추가 헤더 파일 검색 경 로 를 지정 합 니 다.DIRECTORY.
-LDireCTORY 는 추가 함수 라 이브 러 리 검색 경 로 를 지정 합 니 다.
-LIBRARY 연결 시 지정 한 함수 라 이브 러 리 LIBRARY 를 검색 합 니 다.
-m486 486 코드 최적화.
-o FILE 에서 지정 한 출력 파일 을 생 성 합 니 다.실행 가능 한 파일 을 만 들 때 사용 합 니 다.
-O 0 은 최적화 처리 하지 않 는 다.
-O 또는-O 1 최적화 생 성 코드.
-O2 한층 더 최적화.
-O3 은-O2 보다 더욱 최적화 되 고 inline 함 수 를 포함한다.
-shared 공유 대상 파일 생 성.보통 공유 라 이브 러 리 를 만 들 때 사용 합 니 다.
-static 에 서 는 공유 연결 을 사용 할 수 없습니다.
-UMACRO 는 MACRO 매크로 에 대한 정 의 를 취소 합 니 다.
-w 경고 메시지 가 생 성 되 지 않 습 니 다.
-Wall 은 모든 경고 메 시 지 를 생 성 합 니 다.

좋은 웹페이지 즐겨찾기