關于Linux下對于makefile的理解
什么是makefile呢?在Linux下makefile我們可以把理解為工程的編譯規(guī)則。一個工程中源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,那些文件需要先編譯,那些文件需要后編譯,那些文件需要重新編譯,甚至于進行更復雜的功能操作,因為makefile就像一個shell腳本一樣,其中也可執(zhí)行操作系統(tǒng)的命令。
makefile帶來的好處就是---“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大地提高了軟件開發(fā)的效率。
make命令在執(zhí)行時,需要一個makefile文件,以告訴make命令要怎樣去編譯鏈接程序。只要我們makefile寫的足夠好,make命令會自動智能的根據當前文件自己編譯所需要的文件和鏈接目標文件。
makefile的規(guī)則:
target:prerequisites command .......................
target是目標文件,prerequisites就是要生成target所需要的文件或是目標。command就是make需要執(zhí)行的命令。這是一個文件依賴關系,也就是說,target這一個或多個的目標文件依賴于prerequisites中的文件,其生成規(guī)則定義在command中。如果prerequisites中如果有一個以上的文件比target文件內容要新的話,command所定義的文件就會被執(zhí)行。這就是makefile最核心的內容。
舉個栗子:
先準備三個文件: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兩個目標文件
gcc -c file1.o file2.o -o test //編譯出test可執(zhí)行文件,-o 表示指定的目標文件名
file1.o:file1.c file2.h //編譯出file1.o文件,file1.o依賴于file1.c和file2.h,-c表示GCC只把給他的文件編譯成目標文件
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 //當輸入make clean命令時,就會刪除所有的.o文件和test文件了
注意:每個命令行之前都必須有tab符號。
這是簡單的makefile的寫法,其實makefile還有很多的功能注意點值得學習。大家可以下去自行學習
以上這篇關于Linux下對于makefile的理解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Linux環(huán)境(CentOS6.7 64位)下安裝subversion1.9.5的方法
這篇文章主要介紹了Linux環(huán)境(CentOS6.7 64位)下安裝subversion1.9.5的方法,結合實例形式分析了CentOS下安裝subversion1.9.5的相關步驟、命令及操作注意事項,需要的朋友可以參考下2018-04-04
Ubuntu20.04安裝Python3的虛擬環(huán)境教程詳解
這篇文章主要介紹了Ubuntu20.04安裝Python3的虛擬環(huán)境,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
linux修改root密碼和linux忘記root密碼后找回密碼的方法
這篇文章主要介紹了linux修改root密碼和linux忘記root密碼后找回密碼的方法,需要的朋友可以參考下2014-01-01

