日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

makefile——小试牛刀

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 makefile——小试牛刀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//a.h,包含頭文件stdio.h,并且定義一個函數print #include<stdio.h> void print();//b.c,包含頭文件a.h,然后就可以寫print函數的內容了 #include"a.h" void print(){ printf("who are you\n"); }//c.c,包含頭文件a.h,調用print函數 #include"a.h" int main(){ print(); return 0; }

下面是Makefile 固定命名,記住這些文件全部在同一文件夾下,全部編寫完成后,執行make命令就會自動執行Makefile了,

hello:c.o b.o //其中hello是目標文件,c.o和b.o是依賴文件,需要這兩個文件才能生成hello,因為現在還沒有c.o文件,所以跳到c.o:c.c a.h那里,然后執行gcc -c c.c 執行完成后又返回該條語句,發現也沒有b.o,所以跳到b.o:b.c a.hgcc -o hello c.o b.o //這個是shell命令 c.o:c.c a.hgcc -c c.c //其中gcc -c c.c是指編譯生產c.o(改成gcc -o c.o c.c會報錯) b.o:b.c a.hgcc -c b.c clean: //執行make clean會執行下面的語句rm hello c.o b.o

執行效果如下

[root@bogon bp]# ls a.h b.c c.c Makefile [root@bogon bp]# make gcc -c c.c gcc -c b.c gcc -o hello c.o b.o [root@bogon bp]# ls a.h b.c b.o c.c c.o hello Makefile [root@bogon bp]# ./hello who are you

改進后的方法,只需要修改Makefile

[root@bogon bp]# cat Makefile objects=c.o b.o 相當于C語言的宏定義變量 hello:c.o b.ogcc -o hello $(objects) c.o:c.c a.hgcc -c c.c b.o:b.c a.hgcc -c b.c clean:rm hello $(objects)

我們還能更精簡這個過程,也是只修改Makefile

[root@bogon bp]# make cc -c -o c.o c.c cc -c -o b.o b.c gcc -o hello c.o b.o [root@bogon bp]# ls a.h b.c b.o c.c c.o hello Makefile [root@bogon bp]# ./hello who are you [root@bogon bp]# cat Makefile objects=c.o b.o hello:c.o b.ogcc -o hello $(objects) $(bojects):a.h 因為c.o和b.o都依賴a.h c.o:c.c 可以省略掉gcc b.o:b.c clean:rm hello $(objects) [root@bogon bp]#

上面是我自己總結寫的,原文如下http://www.cnblogs.com/sld666666/archive/2010/04/08/1707789.html

進行內核編譯的時候make會多兩個選項,-C和-M.

其中-C $(KDIR) 指明跳轉到內核源碼目錄下讀取那里的MakefileM=$(PWD) 表明然后返回到當前目錄繼續讀入、執行當前的Makefile

轉載于:https://www.cnblogs.com/biaopei/p/7730658.html

總結

以上是生活随笔為你收集整理的makefile——小试牛刀的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。