成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

linux makefile文件心得筆記

系統 Linux
本為講解linux makefile文件,makefile文件的命名,需要通過make的“-f”或者“--file”選項來指定make讀取的makefile文件。makefile文件將會被按照指定的順序進行連接并被make解析執行。

經過長時間學習linux makefile文件,我針對一個簡單的實例進行了對linux makefile文件的總結:于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

#sample Makefile
edit : main.o kbd.o command.o display.o \ #***次:作為目標“edit”的依賴文件列表出現
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o \#第二次:規則命令行中作為“cc”的參數列表
insert.o search.o files.o utils.o
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

在書寫時,一個較長行可以使用反斜線(\)分解為多行,這樣做可以使Makefile清晰、容易閱讀。注意:反斜線之后不能有空格(這也是大家最容易犯的錯誤,而且錯誤比較隱蔽)。大家在書寫Makefile時,推薦者中將較長行分解為使用反斜線連接得多個行的方式。當我們完成了這個Maekfile以后;創建可執行程序 “edit”,你所要做的就是在包含此Makefile的目錄(當然也在代碼所在的目錄)下輸入命令“make”。刪除已經本目錄下生成的文件和所有的.o文件,只需要輸入命令“make clean”就可以了。

為了避免編寫代碼時工作量重復的這個問題,在實際工作中大家都比較認同的方法是,使用一個變量“objects”、“OBJECTS”、 “objs”、“OBJS”、“obj”或者“OBJ”來作為所有的.o文件的列表的替代。在使用到這些文件列表的地方,使用此變量來代替。在上例的 Makefile中可是添加這樣一行:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
“objects”作為一個變量,它代表所有的.o文件的列表。在定義了此變量后,我們就可以在需要使用這些.o文件列表的地方使用“$(objects)”來表示它,而不需要羅列所有的.o文件列表。因此上例的規則就可以這樣寫:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
…….
…….
clean :
rm edit $(objects)
需要增加或者去掉一個.o文件時。我們只需要改變“objects”的定義(加入或者去掉若干個.o文件)。這樣做不但減少維護的工作量,而且可以避免由于遺漏而產生錯誤的可能。

在使用make編譯.c源文件時,可以省略編譯一個.c文件所使用的命令。這是因為make存在一個默認的規則,能夠自動完成對.c文件的編譯并生成對應的.o文件。它執行命令“cc -c”來編譯.c源文件。對于上邊的例子,此默認規則就使用命令“cc -c main.c -o main.o”來創建文件“main.o”。

書寫Makefile時,對于一個.c文件如果使用make的隱含規則,那么它會被自動作為對應.o文件的一個依賴文件(對應是指:文件名除后綴外,其余都相同的兩個文件)。因此我們也可以在規則中省略目標的倚賴.c文件。

上邊的例子就可以以更加簡單的方式書寫,使用了變量“objects”。簡化版本的Makefile
GUN make中文手冊如下:

# sample Makefile
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)

書寫規則建議的方式是:單目標,多依賴。就是說盡量要做到一個規則中只存在一個目標文件,可有多個依賴文件。盡量避免多目標,單依賴的方式。這樣后期維護也會非常方便,而且Makefile會更清晰、明了。

.PHONY : clean
clean :
-rm edit $(objects)
這兩個實現有兩點不同: 1. 通過“.PHONY”特殊目標將“clean”目標聲明為偽目標。防止當磁盤上存在一個名為“clean”文件時,“clean”所在規則的命令無法執行。2. 在命令行之前使用“-”,意思是忽略命令“rm”的執行錯誤。

默認的情況下,make會在工作目錄(執行make的目錄)下按照文件名順序尋找linux makefile文件讀取并執行,查找的文件名順序為:“GNUmakefile”、“makefile”、“Makefile”。

如果make程序在工作目錄下無法找到以上三個文件中的任何一個,它將不讀取任何其他文件作為解析對象。當linux makefile文件的命名不是這三個任何一個時,需要通過make的“-f”或者“--file”選項來指定make讀取的makefile文件。給make指定makefile文件的格式為:“-f NAME”或者“—file=NAME”,它指定文件“NAME”作為執行make時讀取的linux makefile文件。也可以通過多個“-f”或者“--file”選項來指定多個需要讀取的 makefile文件,多個makefile文件將會被按照指定的順序進行連接并被make解析執行。當通過“-f”或者“--file”指定make讀取makefile的文件時,make就不再自動查找這三個標準命名的makefile文件。

【編輯推薦】

  1. 中國政府提供補貼向農村地區推廣Linux
  2. Linux Kernel的新時限調度方案
  3. 詳細解析:Linux操作系統的無線網絡命令
  4. Linux之父Linus向Windows 7豎起大拇指
  5. 全面講述linux集群負載均衡
責任編輯:薛輩輩 來源: linux
相關推薦

2009-12-14 10:47:34

Linux makef

2009-12-22 15:49:50

Linux系統文件鎖

2009-10-26 13:45:39

linux Makef

2010-06-22 17:09:52

Linux Autom

2010-03-01 09:57:55

Linux Makef

2015-08-14 16:55:49

Arch Linux安裝

2010-03-01 16:40:40

Linux Makef

2010-02-25 15:11:48

Linux Makef

2010-06-22 17:28:35

Linux Autom

2017-09-12 09:22:51

LinuxMakefileautoconf工具

2009-10-27 17:58:12

linux make命

2011-08-22 11:23:41

SQL Server 數據修改

2010-02-24 16:01:39

Linux Makef

2010-02-26 10:47:30

Linux Makef

2009-11-06 17:31:03

Oracle密碼文件

2021-04-19 23:29:44

MakefilemacOSLinux

2010-02-24 14:55:35

Linux Makef

2013-12-18 13:30:19

Linux運維Linux學習Linux入門

2022-05-16 10:58:12

Go 項目Makefilemake

2019-09-04 20:49:40

Linux操作系統UNIX
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久亚洲精品国产精品紫薇 | 精品国产欧美 | 精品在线观看入口 | 成人在线免费观看 | 亚洲综合精品 | 天天噜天天干 | 欧美性猛交一区二区三区精品 | 中文在线a在线 | 国产一区二区在线观看视频 | 中文字幕第十页 | av激情影院| 成人久久一区 | 国产欧美在线 | 中文字幕乱码一区二区三区 | 天天视频一区二区三区 | 蜜桃在线视频 | 日韩欧美国产精品 | 一区二区精品 | 成人国产在线视频 | 日日夜夜天天 | 超碰操 | 国产精品综合色区在线观看 | 国产成人精品免费视频 | 亚洲欧洲日韩 | 久久精品亚洲成在人线av网址 | 日韩欧美高清dvd碟片 | 五月天综合网 | 亚洲精品亚洲人成人网 | 亚洲电影在线播放 | 亚洲不卡在线观看 | 伊人超碰 | 日本公妇乱淫xxxⅹ 国产在线不卡 | www.一区二区三区.com | 澳门永久av免费网站 | 欧美xxxx性| 老司机67194精品线观看 | www.啪啪.com| 在线观看亚洲专区 | 天天干视频在线 | 久久视频精品 | 超碰97免费在线 |