欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Linux下對(duì)于makefile的理解

 更新時(shí)間:2017年01月11日 09:26:09   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇關(guān)于Linux下對(duì)于makefile的理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

什么是makefile呢?在Linux下makefile我們可以把理解為工程的編譯規(guī)則。一個(gè)工程中源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,那些文件需要先編譯,那些文件需要后編譯,那些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,因?yàn)閙akefile就像一個(gè)shell腳本一樣,其中也可執(zhí)行操作系統(tǒng)的命令。

makefile帶來(lái)的好處就是---“自動(dòng)化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大地提高了軟件開發(fā)的效率。

make命令在執(zhí)行時(shí),需要一個(gè)makefile文件,以告訴make命令要怎樣去編譯鏈接程序。只要我們makefile寫的足夠好,make命令會(huì)自動(dòng)智能的根據(jù)當(dāng)前文件自己編譯所需要的文件和鏈接目標(biāo)文件。

makefile的規(guī)則:

target:prerequisites

  command

.......................

target是目標(biāo)文件,prerequisites就是要生成target所需要的文件或是目標(biāo)。command就是make需要執(zhí)行的命令。這是一個(gè)文件依賴關(guān)系,也就是說,target這一個(gè)或多個(gè)的目標(biāo)文件依賴于prerequisites中的文件,其生成規(guī)則定義在command中。如果prerequisites中如果有一個(gè)以上的文件比target文件內(nèi)容要新的話,command所定義的文件就會(huì)被執(zhí)行。這就是makefile最核心的內(nèi)容。

舉個(gè)栗子:

先準(zhǔn)備三個(gè)文件:file1.c,file2.c,file2.h

file1.c:

#include<iostream>

int main()

{

file2printf();

return 0;

}

file2.h:

#ifndef FILE2_H_

#define FILE2_H_

void file2printf();

#endif

file2.c

#include"file2.h"

void file2printf()

{

printf("hello world!\n");

}

那么它的makefile怎么寫呢?(makefile文件和文件在同一目錄下)

test:file1.o file2.o          //test依賴file1.o和file2.o兩個(gè)目標(biāo)文件

  gcc -c file1.o file2.o -o test    //編譯出test可執(zhí)行文件,-o 表示指定的目標(biāo)文件名

file1.o:file1.c file2.h          //編譯出file1.o文件,file1.o依賴于file1.c和file2.h,-c表示GCC只把給他的文件編譯成目標(biāo)文件  

  gcc -c file1.c -o file1.o

file2.o:file2.c file2.h                       //這兩句與上兩句相同

  gcc -c file2.c -o file2.o

.PHONY:clean

clean:

rm -rf* .o test      //當(dāng)輸入make clean命令時(shí),就會(huì)刪除所有的.o文件和test文件了

注意:每個(gè)命令行之前都必須有tab符號(hào)。

這是簡(jiǎn)單的makefile的寫法,其實(shí)makefile還有很多的功能注意點(diǎn)值得學(xué)習(xí)。大家可以下去自行學(xué)習(xí)

以上這篇關(guān)于Linux下對(duì)于makefile的理解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux實(shí)現(xiàn)添加新用戶及創(chuàng)建主目錄方式

    Linux實(shí)現(xiàn)添加新用戶及創(chuàng)建主目錄方式

    這篇文章主要介紹了Linux實(shí)現(xiàn)添加新用戶及創(chuàng)建主目錄方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Apache設(shè)置反向代理的方法

    Apache設(shè)置反向代理的方法

    這篇文章主要介紹了Apache設(shè)置反向代理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-08-08
  • Linux環(huán)境(CentOS6.7 64位)下安裝subversion1.9.5的方法

    Linux環(huán)境(CentOS6.7 64位)下安裝subversion1.9.5的方法

    這篇文章主要介紹了Linux環(huán)境(CentOS6.7 64位)下安裝subversion1.9.5的方法,結(jié)合實(shí)例形式分析了CentOS下安裝subversion1.9.5的相關(guān)步驟、命令及操作注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • CentOS7安裝PHP7 Redis擴(kuò)展的方法步驟

    CentOS7安裝PHP7 Redis擴(kuò)展的方法步驟

    這篇文章主要介紹了CentOS7安裝PHP7 Redis擴(kuò)展的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-04-04
  • 等保測(cè)評(píng):Centos超時(shí)退出問題

    等保測(cè)評(píng):Centos超時(shí)退出問題

    等保測(cè)評(píng)主機(jī)測(cè)評(píng)中需要查詢主機(jī)的超時(shí)退出配置,具體在Centos中的話,主要有兩種方式可以實(shí)現(xiàn)超時(shí)退出的功能。文中給大家詳細(xì)介紹,感興趣的朋友跟隨小編一起看看吧
    2019-07-07
  • Ubuntu20.04安裝Python3的虛擬環(huán)境教程詳解

    Ubuntu20.04安裝Python3的虛擬環(huán)境教程詳解

    這篇文章主要介紹了Ubuntu20.04安裝Python3的虛擬環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • linux系統(tǒng)安裝msf的過程詳解

    linux系統(tǒng)安裝msf的過程詳解

    這篇文章主要介紹了linux系統(tǒng)安裝msf的過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Linux多線程鎖屬性設(shè)置方法

    Linux多線程鎖屬性設(shè)置方法

    下面小編就為大家?guī)?lái)一篇Linux多線程鎖屬性設(shè)置方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-01-01
  • linux修改root密碼和linux忘記root密碼后找回密碼的方法

    linux修改root密碼和linux忘記root密碼后找回密碼的方法

    這篇文章主要介紹了linux修改root密碼和linux忘記root密碼后找回密碼的方法,需要的朋友可以參考下
    2014-01-01
  • CentOS 6.2 下升級(jí)安裝為MySQL 5.5的方法

    CentOS 6.2 下升級(jí)安裝為MySQL 5.5的方法

    使用系統(tǒng)CentOS 6.2本來(lái)已經(jīng)系統(tǒng)自帶安裝了mysql 5.1,但是奈何5.1不支持utf8mb4字符集,只能想辦法將Mysql升級(jí)到5.5
    2014-11-11

最新評(píng)論