国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

“C語言”讀書札記之[Linux下C語言編程環(huán)境]

開發(fā) 前端
make工具用來進行協(xié)調的工具,可以根據程序模塊的修改情況重新編譯鏈接目標代碼,以保證目標代碼總是由它的最新模塊組成。

介紹

一般程序都是由多個源文件編譯鏈接而成的,這些源文件的處理步驟通常由Makefile文件管理。

用途

make工具用來進行協(xié)調的工具,可以根據程序模塊的修改情況重新編譯鏈接目標代碼,以保證目標代碼總是由它的最新模塊組成。

準備:

要使用make,準備Makefile的文件(也可以準備其他文件如GNUMakefile或makefile,推薦使用Makefile),它描述了軟件包中各個文件之間的關系,提供了更新每個文件的命令。

方便使用:

當一個適當?shù)腗akefile存在時,每次改變某些源文件,用簡單的shell命令(make),將足以完成所有必需的重新編譯。

原理:

make 程序利用Makefile的數(shù)據和每個文件最新一次更改的時間來確定哪些文件需要更新;對每個需要更新的文件,make程序使用Makefile中定義的命令來更新它。

格式:

  1. #用“井”號表明注釋。  
  2. target(要生成的文件): dependencies(被依賴的文件)  
  3.         #命令前面用的是“tab”而非空格。誤用空格是初學者容易犯的錯誤!  
  4.         命令1 
  5.         命令2 
  6.         命令3 
  7.           .  
  8.           .  
  9.           .  
  10.         命令n  
  11. #可以使用“\”表示續(xù)行。注意,“\”之后不能有空格! 

target通常是我們要生成的文件的名字,擺放的順序不重要,但第一個target是默認的target。當make不帶參數(shù)時,自動執(zhí)行第一個target。target也可以是要求make完成的動作,執(zhí)行這種target后并不能得到和target同名的文件,因此,也稱為偽target(phony target)。

dependencies是生成target所需的文件名列表。依賴可以為空,常用的“clean”target就常常沒有依賴,只有命令。

命令可以是任何一個shell能運行的命令。

案例:

比如生成exe文件,它由2個目標代碼某塊組成,分別為module1.o和module2.o

module1.h文件

  1. int module1 = 1

module1.c文件

  1. #include "module1.h" 
  2. void print1(){  
  3.     printf("var module1:%d\n", module1);  
  4. }  

   [[84247]]

module2.h文件

  1. int module2 = 2

module2.c文件

  1. #include <stdio.h>  
  2. #include "module2.h"  
  3.  
  4. void print2(){  
  5.     printf("var module2:%d\n", module2);  
  6. }  
  7. int main(){  
  8.     print1();  
  9.     print2();  
  10.     return 0;  

 [[84247]] 編譯

Makefile文件

  1. exe:module2.o module1.o  
  2.     gcc -g module1.o module2.o  -o exe  
  3. module2.o:module2.h module2.c  
  4.     gcc -g -c module2.c  
  5. module1.o:module1.h module1.c  
  6.     gcc -g -c module1.c  
  7. clean:  
  8.     rm -f exe *.o 

 [[84247]]截圖

#p#

規(guī)則

在編寫完源程序文件后,從中生成需要的Makefile規(guī)則。

最基本的編寫規(guī)則的方法是從最終的源程序文件開始一個一個的查看源碼文件,把它們要生成的目標文件做為目標,而C語言源碼文件和源碼文件包含的頭文件作為依賴文件生成規(guī)則。

目標和條件之間的關系是:欲更新目標,必須首先更新它的所有條件;所有條件中只要有一個條件被更新了,目標也必須隨之被更新。所謂“更新”就是執(zhí)行一遍規(guī)則中的命令列表,命令列表中的每條命令必須以一個Tab開頭,注意不能是空格,Makefile的格式不像C語言的縮進那么隨意,對于Makefile中的每個以Tab開頭的命令,make會創(chuàng)建一個Shell進程去執(zhí)行它。

Makefile中的變量

Makefile中變量就像一個環(huán)境變量。事實上環(huán)境變量在make中也被解釋成make的變量。

作用:

保存文件名列表。——可以方便地加入新的目標文件而且不易出錯。

保存編譯器參數(shù)。——在很多源代碼編譯時,gcc需要很長的參數(shù)選項,在很多情況下,所有的編譯命令使用一組相同的選項,如果把這組選項使用一個變量表示,那么可以把這個變量放在所有引用編譯器的地方。(當要改變選項的時候,只需改變一次這個變量內容即可)

語法:

變量:“變量”指的是用一個字符串代替另一個字符串的功能。在makefile中可以使用“=”號來定義變量,使用“$(變量名)”來使用變量;還可以用“:=”追加變量的內容。習慣上,變量名使用大寫。

定義: 

變量名=字符串

使用:

$(變量名)

追加:

變量名:=字符串

案例:進化上面的Makefile

  1. OBJS=module1.o module2.o  
  2. C=-c  
  3. CC=gcc  
  4. exe:$(OBJS)  
  5.     $(CC) -g $(OBJS)  -o exe  
  6. module2.o:module2.h module2.c  
  7.     $(CC) -g $(C) module2.c  
  8. module1.o:module1.h module1.c  
  9.     $(CC) -g $(C) module1.c  
  10. clean:  
  11.     rm -f exe *.o 

偽目標

首先要明確,并不是所有的目標文件都對應于磁盤文件,有的目標文件的存在只是為了形成一條規(guī)則,從而使make完成特定的工作,并不生成新的目標文件,這樣的目標稱為偽目標。——如上面Makefile中的clean。常用的還有all。

放例子:

  1. all:exe1 exe2   
  2. exe1:exe1.c exe1.h  
  3.     gcc exe1.c -o exe1  
  4. exe2:exe2.c exe2.h  
  5.     gcc exe2.c -o exe2  
  6. clean:  
  7.     rm -f exe* 

其中的all和clean都為偽目標。偽目標文件是不存在的。注意上面例子中第一條規(guī)則下的命令行為空,make不會執(zhí)行任何動作,只是檢查依賴文件的更新情況, 掃描剩下的幾條規(guī)則并執(zhí)行相應的編譯命令生成可執(zhí)行文件。

條件語句

條件語句可以將一個變量與其他變量的值進行比較,或將一個變量與一個字符串常量相比較。——這樣就可以根據變量的值執(zhí)行或忽略Makefile文件中的一部分腳本。

注意:條件語句用于控制make時間看見的Makefile文件部分,而不能用于執(zhí)行時控制shell命令。

條件語句3條指令:ifeq, else 和endif

放樣例:

  1. ifeq($(VAR), 1)  
  2.     gcc -o exe1 module  
  3. else 
  4.     gcc -o exe2 module  
  5. endif 

調試make

我們在很多語言中都要用到調試,那么我們自然對make也要想到調試了。

make的調試很簡單,只需通過-d選項可是make在執(zhí)行命令時打印調試信息。

這些信息包括:

1、make重新編譯時需要檢查的文件

2、哪些文件被比較以及比較的結果

3、需要重新生成的文件

4、make將要使用的隱含規(guī)則

5、make實際執(zhí)行的隱含規(guī)則和命令

放截圖樣例(一部分)

參考文獻

make - 維基百科,自由的百科全書

第 22 章 Makefile基礎

總結

想要熟練地掌握make工具,必需通過不斷的練習并參考其他Makefile的例子。

我會在后期的開發(fā)學習中不斷完善這篇博文。

 

原文鏈接:http://www.cnblogs.com/baochuan/archive/2012/07/11/2583593.html

  • “C語言” 讀書札記之[程序和編程語言]
  • “C語言” 讀書札記之[編譯執(zhí)行]
  • “C語言” 讀書札記之[再續(xù)編譯執(zhí)行]
  • “C語言” 讀書札記之[讓我們一起學匯編]
  • 責任編輯:張偉 來源: 川山甲的博客
    相關推薦

    2012-06-23 18:13:39

    C語言

    2012-06-25 10:00:29

    C語言

    2012-06-25 10:14:10

    C語言

    2012-06-28 10:38:45

    Web

    2012-06-20 15:01:04

    Web

    2010-09-14 09:24:29

    C語言

    2009-08-25 16:32:24

    C#語言

    2011-07-14 22:25:36

    2009-08-26 17:22:09

    C#語言

    2009-04-24 10:57:25

    2014-07-29 10:12:38

    LinuxC語言編程

    2010-03-19 09:39:17

    Python編程語言

    2022-04-22 15:06:59

    C++PythonJava

    2020-10-19 14:23:48

    C語言編程語言

    2023-08-17 20:13:42

    2021-04-14 15:53:58

    網絡安全C語言wcslen

    2015-12-25 15:52:50

    Linux蘋果編程Swift

    2009-04-24 14:56:24

    2023-05-24 09:31:51

    CGo

    2010-08-24 16:07:37

    C語言
    點贊
    收藏

    51CTO技術棧公眾號

    99久久亚洲精品| 天堂久久一区二区三区| 国产亚洲欧洲高清一区| 精品美女视频在线观看免费软件| 91麻豆精东视频| 日韩精品福利片午夜免费观看| 亚洲精品乱码| 国产精品国产精品| 天天色天天射综合网| 日韩免费观看在线观看| 欧美专区视频| 中文字幕日韩欧美| 在线成人视屏| 中文字幕在线观看亚洲| 久久av影院| 久久视频在线播放| 日韩成人精品| 97在线观看视频国产| 美女网站色精品尤物极品姐弟| 久久久久一本一区二区青青蜜月| 亚洲高清999| 亚洲18私人小影院| 天堂综合网久久| 国产精品电影在线观看| 国产精品中文字幕亚洲欧美| 国产成人激情小视频| 成人3d动漫在线观看| 成人精品一区二区三区电影免费| 91蜜臀精品国产自偷在线 | 北条麻妃在线| 91精品国产欧美一区二区18| 色老头在线观看| 亚洲欧美中文在线视频| 欧美黄页在线免费观看| 欧美日本亚洲视频| 精品久久电影| 韩国成人av| 日韩高清国产一区在线| 成人区一区二区| 日本一区二区三区在线观看| 亚洲欧美中文字幕在线观看| 欧美日精品一区视频| 99re6在线精品视频免费播放| 丝袜美腿精品国产二区| 欧美视频二区欧美影视| 国产精品欧美一区二区三区奶水| 欧美网站在线| 亚洲一区三区视频在线观看| 91农村精品一区二区在线| 日日噜噜夜夜狠狠视频| 欧美日韩精品是欧美日韩精品| 天堂中文av在线资源库| 欧美人在线视频| 亚洲第一天堂| 国产成人三级视频| 亚洲欧美国产三级| av片在线观看| 欧美老女人在线视频| 久久精品播放| 欧美日韩一级在线| 亚洲美女屁股眼交3| 菠萝蜜视频国产在线播放| 久久国产精品网站| 欧美精品麻豆| 日韩在线视频在线观看| 色婷婷综合久色| 日韩精品一级毛片在线播放| 91免费高清视频| 成人久久视频在线观看| 亚洲女优视频| 伊人伊成久久人综合网小说| 青青草综合网| 国产 欧美 日韩 一区| 亚洲国产毛片aaaaa无费看| 高清视频在线观看三级| 国产精品一区专区欧美日韩| 国产毛片精品一区| 天堂91在线| 欧美成人免费视频| 一本色道88久久加勒比精品| 高清一区二区视频| 亚洲成av人片在线观看香蕉| 欧美偷拍综合| 青草视频在线观看视频| 欧美性猛交xxxx乱大交退制版| 成人激情久久| 欧美日韩亚洲在线| 亚洲精品国产精品乱码不99 | av日韩久久| 久久久99国产精品免费| 国产精品国产三级国产aⅴ中文| 91资源在线观看| 91在线视频九色| 中文字幕欧美一| 成人一级视频| 亚洲精品一区二区毛豆| 欧美亚洲丝袜传媒另类| 久久不见久久见国语| 成人在线免费观看av| 日韩成人免费视频| 美女久久网站| 精彩国产在线| 国产精品视频免费在线| 成人免费一区二区三区在线观看| 欧美综合影院| 精品人妻大屁股白浆无码| 欧美精选一区二区| 你懂的网址国产 欧美| 视频免费在线看| 国自产精品手机在线观看视频| 福利91精品一区二区三区| 在线中文字幕电影| 国产精品久久一区二区三区| 亚洲午夜一区二区三区| 精品素人av| 精品999在线| 欧美激情一区二区三区成人| 26uuu国产日韩综合| 成人看片网页| 亚洲一区二区三区av无码| 亚洲人成网7777777国产| 国内一区二区视频| 中文字幕成在线观看| 亚洲国产精品一区在线观看不卡| 制服.丝袜.亚洲.中文.综合 | 成人av在线网址| 亚洲猫色日本管| 精品国产乱子伦一区二区| 国产成人综合一区| 欧美精品videosex牲欧美| 国产无一区二区| 国产精品玖玖玖在线资源| 男女羞羞视频网站| 国产精品第七十二页| 精品国产户外野外| 欧美日韩精品免费观看视频完整| 免费毛片在线| 精品久久久久久一区| 日韩午夜三级在线| 理论电影国产精品| 亚洲第一会所| 欧美丰满熟妇xxxxx| 欧美黄色三级网站| 亚洲欧美经典视频| 久久国产一二区| 久久久久久夜精品精品免费| 国内精品久久久久久久97牛牛 | 福利一区二区三区视频在线观看| 精品国产乱码久久久久久郑州公司| 久久精品2019中文字幕| 亚洲精品午夜精品| 日韩欧美高清一区| 欧美精品一区二区三区在线 | 在线精品亚洲一区二区不卡| 亚洲欧美一区二区久久| 国产精品毛片久久久久久| 亚洲国产精品一区二区久久 | 久久久久蜜桃| 国产综合色在线| 一本在线高清不卡dvd| 青青草一区二区| 国语对白在线视频| 欧美黄色成人| av在线一区二区| 在线成人激情视频| 中国成人在线视频| 欧洲不卡av| 性高湖久久久久久久久| 欧美曰成人黄网| 国产一区二区三区无遮挡| 国产玉足榨精视频在线观看| 欧美电影在线观看一区| 国产综合欧美| 欧美在线一二三四区| 国产精品视频yy9099| 香蕉521av成人网| 成人天堂yy6080亚洲高清| 久久精品免费观看| 69av一区二区三区| 高清视频一区二区三区| 中文字幕97| 日本不卡电影| 亚洲蜜桃精久久久久久久| 日本久久久久久| 国产三级av在线| 久久久久久久久久久久久久 | 亚洲精品美女久久久| 欧美有码在线视频| 四虎永久在线精品无码视频| 欲香欲色天天天综合和网| 色婷婷狠狠五月综合天色拍| 国产亚洲字幕| 在线视频中文字幕第一页| 日韩三区视频| 在线免费观看日韩欧美| 蜜桃视频日韩| 亚洲伊人av| 国产精品情趣视频| 国产精品扒开腿爽爽爽视频 | 欧美一区二区福利在线|