gcc是一款強大的語言編譯工具。還有很多的好處就不再說。我們來具體的認識一下這個編譯器吧。
hello.c
#include <stdio.h>
#include"sum.h"
int main()
{
printf("sum=%d",sum(4,5));
}
sum.h
extern int sum(int a,int b); //聲明
sum.c
int sum(int a,int b)
{
return a + b;
}
gcc編譯過程可分為四個步驟:
預處理
編譯
匯編
鏈接
首先我們看到有一些#include < > , 這些是系統的頭文件,包含的可以是庫文件也可以是自己寫的一些文件。
其中 < > 包含的文件編譯器只在系統的頭文件目錄裡面查找,找不到就報錯(user / include / )
" " 先在當前目錄找,找不到到系統的頭文件目錄。
gcc -E hello.c > hello. i (其中-E 是編譯器到預處理結束,將hello.c預處理成hello.i文件)
預處理主要做了哪些工作呢?(1.加載頭文件 2.宏替換 3.條件編譯)
gcc -c hello.c(到編譯階段停止)(生成目標文件hello.o文件)
gcc -S hello.c (進行到匯編,生成hello.s文件)
gcc -Wall hello.c(將所有警告都列出來)
gcc hello.c -lm(其中 l 是鏈接一個庫,庫名是m(代表math。h))
gcc hello.c -ladd -L. - o hello(使用add裡面的函數)
gcc -shared -fPIC hello.c -o libhello。so(創建動態的庫文件,文件名為hello )