日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
如何使用Linux下的make命令?(linux.make)

make是一個非常常用的命令,在Linux系統(tǒng)中經常被用來編譯程序。通常情況下,我們可以使用make命令自動完成編譯操作,從而使得我們的開發(fā)效率得到很大的提升。本文將會介紹如何使用Linux下的make命令,幫助你更好地管理你的工程。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供孫吳網站建設、孫吳做網站、孫吳網站設計、孫吳網站制作等企業(yè)網站建設、網頁設計與制作、孫吳企業(yè)網站模板建站服務,10余年孫吳做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

一、什么是make?

make是一個自動化構建工具,它可以將源代碼文件自動編譯成可執(zhí)行文件,從而實現(xiàn)程序的自動構建。make命令調用一個Makefile文件,在該文件中定義了源代碼文件及其依賴關系,以及編譯及鏈接的規(guī)則。Makefile文件通過一個特定的格式來描述這些規(guī)則,從而使用make命令來生成目標文件。

二、為什么需要make?

在Linux系統(tǒng)中,當你想運行一個程序時,你需要先編譯它。編譯代碼的過程需要多個步驟,包括編譯、鏈接等。如果代碼很簡單,這些步驟可能還可以通過手動的方式完成,但是如果代碼很復雜,或者它需要依賴很多的庫文件等,就會變得非常困難。這時,我們需要一個自動化的工具來幫助我們完成這個過程。

make命令就是這樣一個工具,它可以自動化完成編譯的過程。當我們修改了一些源代碼文件時,make會自動識別出哪些文件需要重新編譯,從而幫助我們更加高效地完成代碼的開發(fā)。

三、如何編寫Makefile?

Makefile是一個特定格式的文件,用于定義編譯規(guī)則。在Makefile中,我們會定義以下幾種元素:

1. 目標(Target):可生成的文件,如可執(zhí)行文件、庫文件等。

2. 依賴(Dependency):生成目標文件時所需要的源代碼文件或其他目標文件。

3. 命令(Command):當目標文件所依賴的所有文件都存在時,需要執(zhí)行的命令。

下面是一個簡單的Makefile例子:

“`

all: mn

mn: mn.o hello.o

gcc -o mn mn.o hello.o

mn.o: mn.c hello.h

gcc -c mn.c

hello.o: hello.c hello.h

gcc -c hello.c

clean:

rm -f mn *.o

“`

在這個例子里,我們要編譯一個包含mn函數的程序。為了生成該程序,我們需要編譯mn.c和hello.c,并且這兩個文件還有一個共同的頭文件hello.h。我們假設在編譯這兩個文件時都需要使用gcc編譯器。現(xiàn)在,我們就需要將上面的信息寫入一個Makefile文件中。

之一行聲明了一個目標為“all”,該目標依賴于“mn”的目標。當我們在命令行中輸入“make all”時,就會執(zhí)行生成“mn”目標的命令。

第二行定義了生成“mn”目標所需要的依賴文件。我們將編譯出兩個目標文件“mn.o”和“hello.o”。

第三行是我們所需要的命令。它告訴make如何將上面的兩個目標文件鏈接起來生成“mn”目標文件。

第四和第五行定義了生成“mn.o”和“hello.o”所需的依賴關系和命令。

最后一個目標是“clean”,用于在目錄中刪除所有的目標文件和二進制文件。由于這不是一個文件生成目標,所以make不會自動生成它。

四、如何使用make命令?

使用make命令很簡單,只需要在終端中進入到Makefile所在的目錄下,然后輸入“make”命令即可。

make命令的基本用法如下:

“`

make [選項] [目標]

“`

其中,選項包括:

1. -f:可以指定一個特定的Makefile文件。

2. -n:只打印命令,不執(zhí)行它們。

3. -B:強制重新生成目標,即忽略文件的時間戳。

4. -C:可以指定目錄,在該目錄中執(zhí)行make命令。

目標即為Makefile中所定義的目標。

例如,如果我們想生成上述Makefile文件中的所有目標,可以在終端中輸入:

“`

make all

“`

這時,make會自動識別出mn.o和hello.o這兩個目標文件是否需要重新編譯,然后再將它們鏈接成可執(zhí)行文件mn。如果make命令執(zhí)行成功,我們就可以在命令行中直接運行該程序。

通過使用make命令及Makefile文件,我們可以方便地進行代碼編譯并生成目標文件。在Linux系統(tǒng)中,使用make可以大大提高代碼開發(fā)的效率,減少手動編譯過程的錯誤。同時,我們還可以使用make命令來自動化管理我們的工程,幫助我們更好地組織代碼和程序結構。如果你還不會使用make命令,那么趕緊學起來吧!

相關問題拓展閱讀:

  • linux 如何用make命令帶參數詳解,什么意思
  • 在linux系統(tǒng)應用make命令時,makefile 與makefile有何區(qū)別

linux 如何用make命令帶參數詳解,什么意思

1.socket是屬于LINUX下的進程間通信的一種方式BSD,(socket)套接字困清稿。

既可以實現(xiàn)同一臺主機間的進程間通信,也可以實現(xiàn)不同主機間的進程間通信,

也是操作系統(tǒng)給應用程序提供的用于網絡通信的接口。

在Linux下,由于一切皆文件,所以socket也是一種文件??梢酝ㄟ^文件描述符去操作。

2.IP號:主機的唯一標識。

子網掩碼:用于判斷數據包向外網還是向內網發(fā)送。

IP地址在使用必須轉換為二進制形式(inet_addr)。

對應的端口號轉換(htons);

IP區(qū)分主機,端口號區(qū)分進程。

3.客戶端的創(chuàng)建(對應的函數)

(1)創(chuàng)建SOCKET套接字 (socket)

(2)綁定地址信息(bind)(這一步驟可以省略,系統(tǒng)會自動分配)

(3)發(fā)送連接請求(connect)

(4)收發(fā)消息(send/recv)

(5)關閉套接字 (close)

4.服務器的創(chuàng)建(對應的函數)

(1)創(chuàng)建SOCKET套接字 (socket)

(2)綁定地址信息(bind)(服務器對應的IP地址和端口號)

(3)創(chuàng)建一個汪孝監(jiān)聽隊列(listen)

(4)接受連接請求 (accept)

(5)收發(fā)消息 (send/recv)

(6)關閉套接字 (close)

下面就是客戶端的代碼如下:

#include

#include

#include

#include

#include

#include

int main()

{

//定義Internet協(xié)議結構,客戶端的IP信息

struct sockaddr_in myaddr;

memset(&myaddr,0,sizeof(myaddr));

myaddr.sin_family = PF_INET;

myaddr.sin_port = htons(1314);

myaddr.sin_addr.s_addr = inet_addr(“127.0.0.1”);

//1.創(chuàng)建套接字

int clientId = socket(PF_INET,SOCK_STREAM,0);

if(clientId

#include

#include

#include

#include

#include

int main()

{

//定義Internet協(xié)議結構,服務器的端口號和IP地址

struct sockaddr_in myaddr;

memset(&myaddr,0,sizeof(myaddr));

myaddr.sin_family = PF_INET;

myaddr.sin_port = htons(1314);

myaddr.sin_addr.s_addr = inet_addr(“127.0.0.1”);

//1.創(chuàng)建套接字

int uouo123 = socket(PF_INET,SOCK_STREAM,0);

if(uouo123

{

perror(“serverFd\n”);

return -1;

}

printf(“socket ok\n”);

//2.綁定地址信息

int ret = bind(uouo123,(struct sockaddr *)&myaddr,sizeof(myaddr));

if(ret

{

perror(“bind\n”);

close(uouo123);

return -1;

}

printf(“bind ok\n”);

//3.創(chuàng)建一個監(jiān)聽隊列

if(listen(uouo123,10)

{

perror(“l(fā)isten\n”);

close(uouo123);

return -1;

}

printf(“l(fā)istening….\n”);

//4.接受鏈接請求

int conId=accept(uouo123,NULL,NULL);

if(conId

{

perror(“accept\n”);

close(uouo123);

return -1;

}

printf(“accept ok\n”);

//5.收發(fā)消息

while(1)

{

char buf;

memset(buf,0,1024);

printf(“please input message (to xldclient)\n”);

gets(buf);

if(strcmp(buf,”quit”)==0)

{

break;

}

ret = send(conId,buf,sizeof(buf),0);

if(ret

{

perror(“send\n”);

close(uouo123);

close(conId);

return -1;

}

ret = recv(conId,buf,sizeof(buf),0);

if(ret

{

perror(“recv\n”);

close(uouo123);

close(conId);

return -1;

}

printf(“from xldclient:%s\n”,buf);

}

//6.關閉套接字

close(uouo123);

close(conId);

return 0;

在linux系統(tǒng)應用make命令時,makefile 與makefile有何區(qū)別

分析linux make命令段磨與Makefile的區(qū)別:

1、make命令有一些內置的默認功能,但是光有這個還是不知道怎么build程序。必須提供一個文件告訴make應用程序的構造,這個文件就是makefile。

2、Make和makefile提供了強大的功能來管理項目的編譯以及發(fā)布install到指定文件夾。

3、make的原理是執(zhí)行一個叫Makefile文件里的指令,make的基本用處是自動根據makefile里的指握橡斗令來編譯源文件。還可以用來做比如安裝軟件,卸載軟件等事情,但前提是在makefile里寫了。

4、比如makefile里有這么些內容:

install :

然后用make install的話,make程序就會按照上面install:后面的指令執(zhí)行安裝,uninstall也是一樣的道理,大部分的作者會寫有卸載的部分,這時只要簡單地執(zhí)行make unistall就可以,如果作者懶沒有寫,那就只有根據make install中的步驟,把什么文件拷到哪去了,然后分別手動刪除。還有關如滑鍵的一點是,編譯安裝完成后,不要刪除源代碼,不然就算作者寫了unnistall目標,也沒有makefile可以執(zhí)行了。

  Make命令

  在linux make命令后不僅可以出現(xiàn)宏定義,還可以跟其他命令行參數,這些參數指定了需要編譯的目標文件。其標準形式為:

  target1 :

  

  方括號中間的部分表示可選項。Targets和dependents當中可以包含字符、數字、句點和”/”符號。除了引用,commands中不能含有”#”,也不允許換行。

  在通常的情況下命令行參數中只含有一個”:”,此時command序列通常和makefile文件中某些定義文件間依賴關系的描述行有關。如果與目標相關連的那些描述行指定了相關的command序列,那么就執(zhí)行這些相關的command命令,即使在分號和(tab)后面的aommand字段甚至有可能是NULL。如果那些與目標相關連的行沒有指定command,那么將調用系統(tǒng)默認的目標文件生成規(guī)則。

  如果命令行參數中含有兩個冒號”::”,則此時的command序列也許會和makefile中所有描述文件依賴關系的行有關。此時將執(zhí)行那些與目標相關連的描述行所指向的相關命令。同時還將執(zhí)行build-in規(guī)則。如果在執(zhí)行command命令時返回了一個非”0″的出錯信號,例如makefile文件中出現(xiàn)了錯誤的目標文件名或者出現(xiàn)了以連字符打頭的命令字符串,make操作一般斗亮和會就此終止,但如果make后帶有”-i”參數,則make將鍵逗忽略此類出錯信號。Make命本身可帶有四種參數:標志、宏定義、描述文件名和目標文件名。其標準形式為:

  Make

  Unix系統(tǒng)下標志位flags選項及其含義為:

  ◆-f file指定file文件為描述文件,如果file參數為”-“符,那么描述文件指向標準輸入。如果沒有”-f”參數,則系統(tǒng)將默認當前目錄下名為 makefile或者名為Makefile的文件為描述文件。在linux中, GNU make 工具在當前工作目錄中按照GNUmakefile、makefile、Makefile的順序搜索 makefile文件。

  ◆-i 忽略命令執(zhí)行返回的出錯信息。

  ◆-s 沉默模式,在執(zhí)行之前不輸出相應的命令行信息。

  ◆-r 禁止使用build-in規(guī)則。

  ◆-n 非執(zhí)行模式,輸出所有執(zhí)行命令,但并不執(zhí)行。

  ◆-t 更新目標文件。

  ◆-q make操作將根據目標文件是否已經更新返回”0″或非”0″的狀態(tài)信息。

  ◆-p 輸出所有宏定義和目標文件描述。

  ◆-d Debug模式,輸出有關文件和檢測時間的詳細信息。

  linux下make標志位的常用選項與Unix系統(tǒng)中稍有不同,下面我們只列出了不同部分:

  ◆-c dir 在讀取 makefile 之前改變到指定的目錄dir。

  ◆-I dir 當包含其他 makefile文件時,利用該選項指定搜索目錄。

  ◆-h help文擋,顯示所有的make選項。

  ◆-w 在處理 makefile 之前和之后,都顯示工作目錄。

  通過命令行參數中的target ,可指定make要編譯的目標,并且允許同時定義編譯多個目標,操作時按照從左向右的順序依次編譯target選項中指定的目標文件。如果命令行中沒有指定目標,則系統(tǒng)默認target指向描述文件中之一個目標文件。

  通常,makefile 中還定義有 clean 目標,可用來清除編譯過程中的中間文件,例如:

  clean:

  rm -f *.o

  運行 make clean 時,將執(zhí)行 rm -f *.o 命令,最終刪除所有編譯過程中產生的所有中間文件。

  隱含規(guī)則

  在make 工具中包含有一些內置的或隱含的規(guī)則,這些規(guī)則定義了如何從不同的依賴文件建立特定類型的目標。Unix系統(tǒng)通常支持一種基于文件擴展名即文件名后綴的隱含規(guī)則。這種后綴規(guī)則定義了如何將一個具有特定文件名后綴的文件(例如.c文件),轉換成為具有另一種文空盯件名后綴的文件(例如.o文件):

  .c:.o

  $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $1zap

  /usr/bin/make -dp | grep -v TIME>2zap

  diff 1zap 2zap

  rm 1zap 2zap

  lint: dosys.c donamc.c file.c main.c misc.c version.c gram.c

  $(LINT) dosys.c donamc.c file.c main.c misc.c version.c

  gram.c

  rm gram.c

  arch:

  ar uv /sys/source/s2/make.a $(FILES)

  通常在描述文件中應象上面一樣定義要求輸出將要執(zhí)行的命令。在執(zhí)行了 linux make命令之后,輸出結果為:

  $ make

  cc -c version.c

  cc -c main.c

  cc -c donamc.c

  cc -c misc.c

  cc -c file.c

  cc -c dosys.c

  yacc gram.y

  mv y.tab.c gram.c

  cc -c gram.c

  cc version.o main.o donamc.o misc.o file.o dosys.o gram.o

  -LS -o make

+3348+3044=19580b=046174b

  最后的數字信息是執(zhí)行”@size make”命令的輸出結果。之所以只有輸出結果而沒有相應的命令行,是因為”@size make”命令以”@”起始,這個符號禁止打印輸出它所在的命令行。

  描述文件中的最后幾條命令行在維護編譯信息方面非常有用。其中”print”命令行的作用是打印輸出在執(zhí)行過上次”make print”命令后所有改動過的文件名稱。系統(tǒng)使用一個名為print的0字節(jié)文件來確定執(zhí)行print命令的具體時間,而宏$?則指向那些在print 文件改動過之后進行修改的文件的文件名。如果想要指定執(zhí)行print命令后,將輸出結果送入某個指定的文件,那么就可修改P的宏定義:

  make print “P= cat>zap”

  在linux中大多數軟件提供的是源代碼,而不是現(xiàn)成的可執(zhí)行文件,這就要求用戶根據自己系統(tǒng)的實際情況和自身的需要來配置、編譯源程序后,軟件才能使用。只有掌握了make工具,才能讓我們真正享受到到Linux這個自由軟件世界的帶給我們無窮樂趣。

linux .make的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于linux .make,如何使用Linux下的make命令?,linux 如何用make命令帶參數詳解,什么意思,在linux系統(tǒng)應用make命令時,makefile 與makefile有何區(qū)別的信息別忘了在本站進行查找喔。

香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統(tǒng)開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。


當前標題:如何使用Linux下的make命令?(linux.make)
瀏覽路徑:http://www.dlmjj.cn/article/coddsgj.html