C高級(jí)makefile使用

C高級(jí)技術(shù)

makefile使用

  • 編譯工具GCC
    • 源文件(.c)--->預(yù)處理(.i)--->匯編(.s)--->目標(biāo)(.o)--->鏈接(*.exe)
    gcc -E main.c -o main.i
    gcc -S main.i -o main.s
    gcc -c main.s -o main.o
     gcc main.o -o main
    ./main->可執(zhí)行
    
  • makefile文件的編寫
    一個(gè)工程里文件不計(jì)其數(shù),其按類型功能與模塊分別放在若干個(gè)目錄里。
    makefile制定了哪些需要重新編譯哪些不要。
#FINAL:=main
#OBJECTS:=a.o b.o #代表后面所有的依賴文件
#$(FINAL):$(OBJECTS)
#   gcc $^ -o $(FINAL)#$^代表左邊第一個(gè)依賴文件
#a.o:a.c
#   gcc -c $< -o a.o 
#b.o:b.c
#   gcc -c $< -o b.o
#clean:
#   rm *.o $(FINAL)
FINAL:=main
OBJECTS:=a.o b.o #代表后面所有的依賴文件
$(FINAL):$(OBJECTS)
    gcc $^ -o $(FINAL)#$^代表左邊第一個(gè)依賴文件
%.o:%.c
    gcc -c $< -o $@ 
clean:
    rm *.o $(FINAL)

多文件聯(lián)合編譯

#include <stdio.h>
#include "b.h"

- #include "b.h"理論上只能包含一次,但是如果重復(fù)包含了就會(huì)出現(xiàn)錯(cuò)誤,所以我們使用#ifndef b_h--->#define b_h--->#endif.在第二次調(diào)用的時(shí)候,不符合#ifndef.所以不會(huì)重復(fù)出現(xiàn).

extern int c;:extern外部找c,只起聲明作用,表示當(dāng)前用到得c要去外部文件找同名變量是用auto修飾的.
int main()
{
//  c=0;//得到的值為0

    printf("c=%d",c);
    return 0;
}

  • c.c用static修飾全局變量,代表當(dāng)前這個(gè)變量智能被當(dāng)前的文件訪問,外部文件訪問不到.
    //<>:代表直接去系統(tǒng)庫找,""代表先到當(dāng)前目錄下找,如果當(dāng)前目錄下找不到就會(huì)去系統(tǒng)找.

extern int sum(int,int);//因?yàn)閕包含了頭文件"c.h".

int main()
{
    int c=sum(1,2);
    printf("sum=%d\n",c);
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容