精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux Makefile由淺入深剖析

系統 Linux
本文主要講解linux Makefile的相關。例如:在Makefile中“規則”就是描述在什么情況下、如何重建規則的目標文件,通常規則中包括了目標的依賴關系(目標的依賴文件)和重建目標的命令。

經過長時間學習linux Makefile,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

假設我們有一個程序由5個文件組成,源代碼如下:
/*main.c*/
#include "mytool1.h"
#include "mytool2.h"
int main()
{
mytool1_print("hello mytool1!");
mytool2_print("hello mytool2!");
return 0;
}
/*mytool1.c*/
#include "mytool1.h"
#include
void mytool1_print(char *print_str)
{
printf("This is mytool1 print : %s ", print_str);
}
/*mytool1.h*/
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
/*mytool2.c*/
#include "mytool2.h"
#include
void mytool2_print(char *print_str)
{
printf("This is mytool2 print : %s ", print_str);
}
/*mytool2.h*/
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif

首先了解一下make和linux Makefile。GNU make是一個工程管理器,它可以管理較多的文件。我所使用的RedHat 9.0的make版本為GNU Make version 3.79.1。使用make的***好處就是實現了“自動化編譯”。如果有一個上百個文件的代碼構成的項目,其中一個或者幾個文件進行了修改,make就能夠自動識別更新了的文件代碼,不需要輸入冗長的命令行就可以完成***的編譯工作。make執行時,自動尋找Makefile(makefile)文件,然后執行編譯工作。所以我們需要編寫Makefile文件,這樣可以提高實際項目的工作效率。

在一個linux Makefile中通常包含下面內容:
1、需要由make工具創建的目標體(target),通常是目標文件或可執行文件。
2、要創建的目標體所依賴的文件(dependency_file)。
3、創建每個目標體時需要運行的命令(command)。
格式如下:
target:dependency_files
command
target:規則的目標。通常是程序中間或者***需要生成的文件名,可以是.o文件、也可以是***的可執行程序的文件名。另外,目標也可以是一個make執行的動作的名稱,如目標“clean”,這樣的目標稱為“偽目標”。dependency_files:規則的依賴。生成規則目標所需要的文件名列表。通常一個目標依賴于一個或者多個文件。

command:規則的命令行。是make程序所有執行的動作(任意的shell命令或者可在shell下執行的程序)一個規則可以有多個命令行,每一條命令占一行。注意:每一個命令行必須以[Tab]字符開始,[Tab]字符告訴make此行是一個命令行。make按照命令完成相應的動作。這也是書寫Makefile中容易產生,而且比較隱蔽的錯誤。命令就是在任何一個目標的依賴文件發生變化后重建目標的動作描述。一個目標可以沒有依賴而只有動作(指定的命令)。比如Makefile中的目標“clean”,此目標沒有依賴,只有命令。它所指定的命令用來刪除make過程產生的中間文件(清理工作)。

在Makefile中“規則”就是描述在什么情況下、如何重建規則的目標文件,通常規則中包括了目標的依賴關系(目標的依賴文件)和重建目標的命令。make執行重建目標的命令,來創建或者重建規則的目標(此目標文件也可以是觸發這個規則的上一個規則中的依賴文件)。規則包含了目標和依賴的關系以及更新目標所要求的命令。

Makefile中可以包含除規則以外的部分。一個最簡單的Makefile可能只包含規則描述。規則在有些Makefile中可能看起來非常復雜,但是無論規則的書寫是多么的復雜,它都符合規則的基本格式。

下面就可以寫出***個Makefile了。
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
clean:
rm -f *.o main

在shell提示符下輸入make,執行顯示:
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o

執行結果如下:
[armlinux@lqm makefile-easy]$ ./main
This is mytool1 print : hello mytool1!
This is mytool2 print : hello mytool2!
這只是最為初級的Makefile,現在來對這個Makefile進行改進。

改進一:使用變量
一般在書寫Makefile時,各部分變量引用的格式如下:
1. make變量(Mak1. make變量(Makefile中定義的或者是make的環境變量)的引用使用“$(VAR)”格式,無論“VAR”是單字符變量名還是多字符變量名。
2. 出現在規則命令行中shell變量(一般為執行命令過程中的臨時變量,它不屬于Makefile變量,而是一個shell變量)引用使用shell的“$tmp”格式。
3. 對出現在命令行中的make變量同樣使用“$(CMDVAR)” 格式來引用。
OBJ=main.o mytool1.o mytool2.o
make:$(OBJ)
gcc -o main $(OBJ)
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
clean:
rm -f main $(OBJ)

改進二:使用自動推導
讓make自動推導,只要make看到一個.o文件,它就會自動的把對應的.c文件加到依賴文件中,并且gcc -c  .c也會被推導出來,所以Makefile就簡化了。
CC = gcc
OBJ = main.o mytool1.o mytool2.o
make: $(OBJ)
$(CC) -o main $(OBJ)
main.o: mytool1.h mytool2.h
mytool1.o: mytool1.h
mytool2.o: mytool2.h
.PHONY: clean
clean:
rm -f main $(OBJ)

改進三:自動變量($^  $<  $@)的應用
Makefile 有三個非常有用的變量,分別是$@、$^、$<。代表的意義分別是:
$@--目標文件,
$^--所有的依賴文件,
$<--***個依賴文件。
CC = gcc
OBJ = main.o mytool1.o mytool2.o
main: $(OBJ)
$(CC) -o $@ $^
main.o: main.c mytool1.h mytool2.h
$(CC) -c $<
mytool1.o: mytool1.c mytool1.h
$(CC) -c $<
mytool2.o: mytool2.c mytool2.h
$(CC) -c $<
.PHONY: clean
clean:
rm -f main $(OBJ)
 這些是最為初級的知識,現在至少可以減少編譯時的工作量。細節方面的東西還需要在以后的工作和學習中不斷的總結,不斷的深化理解。可以 參考GNU Make手冊,這里講解的比較全面。

【編輯推薦】

  1. linux makefile文件心得筆記
  2. 講述linux脫機打印命令
  3. 詳細解析:Linux操作系統的無線網絡命令
  4. Linux之父Linus向Windows 7豎起大拇指
  5. 全面講述linux集群負載均衡
責任編輯:薛輩輩 來源: Linux
相關推薦

2009-12-14 10:47:34

Linux makef

2009-10-26 11:34:42

linux makef

2010-06-22 17:09:52

Linux Autom

2010-03-01 09:57:55

Linux Makef

2010-02-25 15:11:48

Linux Makef

2010-03-01 16:40:40

Linux Makef

2020-12-02 08:30:27

Java Synchroniz并發

2010-03-25 17:20:00

CentOS入門

2021-07-09 06:28:49

ZabbixLinux運維

2010-03-10 15:44:04

2017-09-12 09:22:51

LinuxMakefileautoconf工具

2010-06-22 17:28:35

Linux Autom

2009-10-27 17:58:12

linux make命

2019-07-03 15:14:00

Oracle存儲結構

2010-01-07 13:44:54

Linux內核代碼

2010-03-04 17:36:01

Linux系統分區

2009-06-17 17:00:03

2010-03-08 14:40:27

Linux進程調度

2009-11-25 09:16:34

SUSE Linux

2010-03-03 14:30:35

Linux睡眠休眠
點贊
收藏

51CTO技術棧公眾號

自拍偷自拍亚洲精品播放| 成人免费一区| av激情综合网| 2019亚洲日韩新视频| 一起草在线视频| 日韩在线伦理| 日本一区二区高清| 国产999精品久久久影片官网| 特大黑人巨人吊xxxx| 最新日韩精品| 最新日韩在线视频| 国产精品大全| 国产美女www| 亚洲深深色噜噜狠狠爱网站| 这里只有精品视频在线观看| 黄色一级大片免费| 四虎电影院在线观看| 日韩电影免费在线看| 久久亚洲精品中文字幕冲田杏梨| 日韩女优在线视频| а√天堂资源官网在线资源| 国产亚洲1区2区3区| 91色p视频在线| 日韩三级免费看| 日本久久综合| 亚洲国产成人精品女人久久久| 美女一区二区三区视频| 哥也色在线视频| 久久亚洲精华国产精华液 | 国一区二区在线观看| 亚洲精品永久免费| 毛片毛片毛片毛片毛| 一根才成人网| 一区二区三区精品视频| 神马影院一区二区| 好吊色一区二区| 免费在线观看一区二区三区| 韩国视频理论视频久久| 日本不卡一二区| 小说区图片区色综合区| 日韩午夜精品视频| 亚洲免费一级视频| 在线天堂新版最新版在线8| 一区二区三区高清| 亚洲精品中文字幕乱码三区不卡| 天堂网在线中文| 国产一区二区毛片| 国产精品wwwwww| 男人的天堂一区| 国产精品多人| 久久亚洲精品国产亚洲老地址| 亚洲第一综合网| 日韩深夜福利| 欧美一级精品大片| 激情文学亚洲色图| 日韩av电影资源网| 色狠狠色噜噜噜综合网| 国产又黄又大又粗视频| 国产盗摄在线视频网站| 一二三区精品视频| 亚洲精品国产精品久久| 九色视频成人自拍| 26uuu国产日韩综合| 国产精品免费一区二区三区观看| 国产按摩一区二区三区| 国产一区二区美女诱惑| 国产精品三级网站| 天天操天天干天天摸| 亚洲人成高清| 97国产suv精品一区二区62| 激情综合网五月婷婷| 国内成人在线| 国模精品视频一区二区三区| 欧美videofree性高清杂交| 欧美久久电影| 日本午夜在线视频| 久久新电视剧免费观看| 欧美xxxx黑人又粗又长精品| 男女视频在线观看| 成人美女在线观看| 国产一区免费视频| 五月婷婷狠狠干| 91尤物视频在线观看| 玛丽玛丽电影原版免费观看1977| 欧美高清成人| 国产欧美一区二区三区在线老狼 | 国内精品国产三级国产在线专| 一级黄色在线观看| 麻豆精品一区| 欧美一区二区三区日韩视频| 91人妻一区二区三区| 涩爱av色老久久精品偷偷鲁 | 亚洲午夜精品视频| 成人网在线视频| 亚洲综合精品视频| 极品少妇一区二区| 成人动漫视频在线观看完整版| 蜜桃视频在线观看www| 粉嫩aⅴ一区二区三区四区五区| 精品综合久久久| 国产天堂在线| 椎名由奈av一区二区三区| 黄色一级片av| 成人免费网站观看| 欧美网站大全在线观看| av在线网站免费观看| 国产精品18hdxxxⅹ在线| 亚洲欧美制服丝袜| 一级片一级片一级片| 激情综合激情| 国产精品一区二区久久国产| 亚洲国产视频一区二区三区| 久久亚洲综合色一区二区三区| 小说区视频区图片区| 欧美xxxx少妇| 色女孩综合影院| 91香蕉视频在线观看视频| 无码国模国产在线观看| 国产亚洲精品久久久优势| 欧美一区二区三区爽爽爽| 国产欧美不卡| 91香蕉亚洲精品| 手机亚洲第一页| 亚洲免费观看在线观看| 美女福利视频在线| 深夜激情久久| 亚洲人成网站999久久久综合| 亚洲欧美一区二区三区极速播放 | 欧美日韩美女一区二区| 又大又长粗又爽又黄少妇视频| 国产成人一区二区三区影院| 九九热最新视频//这里只有精品| 六月丁香婷婷综合| 高清国产一区二区| 国产又大又长又粗又黄| 欧美片第一页| 精品国产乱码久久久久久蜜臀 | 精品国产18久久久久久二百| 国产婷婷成人久久av免费高清| 日本老熟俱乐部h0930| 天堂成人免费av电影一区| 99中文字幕| 午夜毛片在线| 欧美综合一区二区| 久久国产精品无码一级毛片| 欧美激情一区| 91视频88av| 日本美女在线中文版| 91国内精品野花午夜精品| 亚洲综合自拍网| 亚洲欧美亚洲| 亚洲一区二区三区四区在线播放| 电影av在线| 色老汉一区二区三区| 熟女丰满老熟女熟妇| 1024日韩| 国产精品加勒比| 伦理av在线| 欧美刺激脚交jootjob| 99视频只有精品| 黄网站免费久久| 中文字幕成人一区| 日韩国产一二三区| 日韩在线激情视频| 波多野结衣视频在线观看| 91麻豆免费观看| 男女午夜激情视频| 欧美精品尤物在线观看| 国外成人性视频| 人妻妺妺窝人体色www聚色窝| 一区二区三区日韩| 亚洲欧美天堂在线| 综合av在线| 国产精品免费一区二区三区四区 | 国产午夜大地久久| 国产精品色呦| 日本精品久久久久久久| 黄色的视频在线免费观看| 一本久道久久综合中文字幕| 少妇户外露出[11p]| 久久国产免费| 日韩在线导航| 亚洲电影二区| 精品自在线视频| 欧美特级特黄aaaaaa在线看| 国产精品国产三级国产专播品爱网| 国产aaaaa毛片| 亚洲第一天堂| 国产精品一级久久久| 松下纱荣子在线观看| 亚洲欧美视频在线| 国产真人无遮挡作爱免费视频| 中文欧美字幕免费| 日本55丰满熟妇厨房伦| 欧美日韩一区二区国产| 精品国产一区二区三区麻豆小说| 亚洲精品一区| www.xxxx精品| 亚洲卡一卡二卡三| 在线亚洲一区观看| 97在线观看免费高| 成人99免费视频| 在线观看免费黄网站| 亚洲乱码在线| 久久国产欧美精品| 国产精品麻豆成人av电影艾秋| 欧美成人国产va精品日本一级| 日韩一级片免费看| 欧美色图天堂网| 日本一级二级视频| 久久久高清一区二区三区| 中文字幕第一页在线视频| 亚洲三级色网| 黄色www在线观看| 欧美大胆视频| 91亚洲一区精品| 亚洲精品国产精品国产| 欧美成人免费网| 噜噜噜在线观看播放视频| 欧美一级黄色片| 久久久精品毛片| 亚洲一区在线观看免费观看电影高清 | julia一区二区中文久久94| 成人国产二区| 九九热精品在线| 国产免费av在线| 亚洲国产一区二区三区在线观看 | 国产激情视频在线看| 免费99精品国产自在在线| 免费黄色网页在线观看| 一个色综合导航| 邻家有女韩剧在线观看国语| 日韩电影大片中文字幕| 国精产品一品二品国精品69xx| 7777精品伊人久久久大香线蕉超级流畅 | 99精品国产高清一区二区| 欧美一级电影在线| 手机在线观看av| 97视频在线播放| 俺来也官网欧美久久精品| 久久伊人91精品综合网站| 浪潮av一区| 不卡av电影院| 伊人福利在线| 久久久视频在线| 国产伦理精品| 欧美亚洲激情在线| www.日韩| 国产精品高潮呻吟视频| 日韩av一级| 国产日产久久高清欧美一区| 色噜噜成人av在线| 亚洲一区亚洲二区亚洲三区| 国产精品igao视频网网址不卡日韩 | 今天免费高清在线观看国语| 国产精品观看| 日日摸日日碰夜夜爽无码| 日韩午夜激情| 日韩欧美xxxx| 狠狠色丁香久久婷婷综| 国产亚洲色婷婷久久| 高清不卡在线观看av| 毛茸茸多毛bbb毛多视频| 国产亚洲欧美中文| 成人一级黄色大片| 亚洲欧美偷拍卡通变态| 日本熟女一区二区| 日韩欧美一区二区三区| 丰满人妻一区二区三区四区| 4438x成人网最大色成网站| 精品国产999久久久免费| 日韩成人av网| 自拍视频在线| 欧美国产激情18| 美脚恋feet久草欧美| 国产精品自拍网| 91成人在线精品视频| 欧美精品一区二区三区四区五区 | ,一级淫片a看免费| 日韩欧美中文一区二区| 你懂得在线网址| 麻豆国产精品va在线观看不卡| 国产一二三在线| 成人精品一区二区三区电影黑人| 超碰97久久| 亚洲电影一二三区| 欧美另类专区| 黄色免费网址大全| 国产91精品在线观看| 男人操女人动态图| 亚洲在线观看免费视频| 国产真人无遮挡作爱免费视频| 日韩视频123| 北条麻妃在线| 97国产一区二区精品久久呦| 日韩福利在线观看| 欧美国产综合视频| 欧美激情成人在线| 999精彩视频| 成人免费毛片app| 欧美一级特黄高清视频| 欧美日韩国产一区二区| 国产情侣在线播放| 国产亚洲a∨片在线观看| 蜜臀av国内免费精品久久久夜夜| 国产精品久久久久久久美男 | 国产成a人无v码亚洲福利| 娇妻被老王脔到高潮失禁视频| 无吗不卡中文字幕| 国产手机av在线| 中文字幕亚洲一区二区三区五十路| 国产精选在线| 国产91视觉| 日韩国产欧美| 欧美伦理视频在线观看| av在线播放不卡| 精品无码一区二区三区电影桃花| 欧美另类久久久品| 高清在线观看av| 欧美在线影院在线视频| caoporn成人免费视频在线| 99精品一级欧美片免费播放| 麻豆一区二区在线| 亚洲女优在线观看| 色偷偷久久一区二区三区| 日韩一级片免费| 97视频在线观看播放| 一区二区三区视频播放| 中文字幕乱码免费| 激情综合五月婷婷| 久久久精品少妇| 欧美精品免费视频| 思思99re6国产在线播放| 国产精品久久久久久久天堂| 里番精品3d一二三区| 妞干网在线观看视频| 懂色av一区二区三区蜜臀| 精品99在线观看| 精品福利一区二区三区免费视频| 丝袜美腿av在线| 国产精品二区在线观看| 国产精品xvideos88| 特种兵之深入敌后| 亚洲最大成人网4388xx| 欧美熟妇交换久久久久久分类| 久久久免费观看视频| 日本天堂一区| 玩弄japan白嫩少妇hd| 久久蜜桃一区二区| wwwwww在线观看| 日韩中文字幕在线看| 警花av一区二区三区| 天堂а√在线中文在线| 国产69精品久久99不卡| 精品成人免费视频| 日韩成人中文电影| 在线看欧美视频| 麻豆中文字幕在线观看| 国产黄色成人av| 日本一区二区三区四区五区| 国产丝袜一区视频在线观看| 欧亚一区二区| 亚洲免费视频播放| 成人精品在线视频观看| 秋霞精品一区二区三区| 正在播放国产一区| 精品国产一区二| 黄网站欧美内射| 中文字幕成人网| 亚洲精品国产片| 日韩av手机在线观看| 午夜久久免费观看| 亚洲乱妇老熟女爽到高潮的片| 欧美色视频日本版| 在线观看免费高清完整| 91九色蝌蚪嫩草| 男女精品网站| 黄视频网站免费看| 亚洲电影第1页| 婷婷综合六月| 中文字幕色呦呦| 国产日韩欧美不卡在线| 国产视频第二页| 91超碰中文字幕久久精品| 欧美日一区二区| av电影在线播放| 欧美网站一区二区| av影院在线免费观看| 一本一道久久a久久精品综合 | 国产成人精品免费在线| 国产精品久久久久久人| 久久亚洲精品一区| 一区二区小说| 成人免费黄色av| 欧美专区日韩专区| segui88久久综合9999| 在线不卡日本| 国产亚洲成aⅴ人片在线观看| 草逼视频免费看| 91精品免费久久久久久久久|