Linux-makefile
生活随笔
收集整理的這篇文章主要介紹了
Linux-makefile
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. make的優(yōu)點(diǎn)
2.makefile基本語法
目標(biāo)(target):目標(biāo)文件1 目標(biāo)文件2gcc -o 欲新建的可執(zhí)行文件 目標(biāo)文件1 目標(biāo)文件23.實(shí)例
現(xiàn)在我們有如下三個(gè)文件
main.c tool.c tool.h
文件內(nèi)容如下
main.c
tool.c
#include "tool.h"int find_max(int arr[],int n) {int m = arr[0];int i;for(i=0;i<n;i++){if(arr[i]>m)m = arr[i];}return m; }tool.h
int find_max(int arr[],int n);makefile文件按照以下格式寫
mian:main.c tool.ogcc main.c tool.o -o maintool.o:tool.c gcc -c tool.cclean:rm *.o main命令行執(zhí)行make
[ubuntu@VM-48-245-ubuntu ~/makefile_test]$ make可以看到輸出文件如下
main main.c makefile tool.c tool.h tool.oclean是用于刪除.o結(jié)尾的文件和main文件,執(zhí)行make clean
make clean之后文件只剩下
main.c makefile tool.c tool.h實(shí)例2
現(xiàn)在有如下文件
bar.h foo.c foo.o main.c bar.c bar.o foo.hbar.h代碼如下
#include "bar.h"int find_min(int arr[],int n) {int m = arr[0];int i;for(i=0;i<n;i++){if(arr[i]<m)m = arr[i];}return m; }foo.c代碼如下
#include "foo.h"int find_max(int arr[],int n) {int m = arr[0];int i;for(i=0;i<n;i++){if(arr[i]>m)m = arr[i];}return m; }bar.h和foo.h分別是兩個(gè)函數(shù)的聲明,這里不再列出,然后是main.c文件,如下
#include "foo.h" #include "bar.h" #include <stdio.h>int main() {int arr[] = {1,8,3,4,5};int min = find_min(arr,5);int max = find_max(arr,5);printf("min = %d\n",min);printf("max = %d\n",max);return 0; }makefile如下
main:main.c foo.o bar.ogcc main.c foo.o bar.o -o main foo.o:foo.cgcc -c foo.c bar.o:bar.cgcc -c bar.c clean:rm *.o main使用shell script變量簡化makefile
變量的基本語法:
1.變量最好以“大寫字母”為主
2.運(yùn)用變量時(shí),以 ${變量} 或 $(變量) 使用
此時(shí)makefile可以更改為
以后如果我們想用g++編譯的話,就可以把第一行g(shù)cc改為g++
如果我們想加入鏈接時(shí)也可以使用變量來替換.
實(shí)例3
如果我們現(xiàn)在講上面的main.c拆成兩個(gè)分別為main_max.c和main_min.c
main_max.c
更改makefile文件如下
CC = gccmain_max:main_max.c foo.o bar.o$(CC) main_max.c foo.o bar.o -o main_max main_min:main_min.c foo.o bar.o$(CC) main_min.c foo.o bar.o -o main_min foo.o:foo.c$(CC) -c foo.c bar.o:bar.c$(CC) -c bar.c clean:rm *.o main執(zhí)行make后,發(fā)現(xiàn)只執(zhí)行了第一條記錄
為了全部執(zhí)行,將makefile更改如下
CC = gcc all:main_max main_min main_max:main_max.c foo.o bar.o$(CC) main_max.c foo.o bar.o -o main_max main_min:main_min.c foo.o bar.o$(CC) main_min.c foo.o bar.o -o main_min foo.o:foo.c$(CC) -c foo.c bar.o:bar.c$(CC) -c bar.c clean:rm *.o main現(xiàn)在兩個(gè)都可以編譯了
可以看到兩個(gè)文件都已出現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的Linux-makefile的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scrapy-css选择器
- 下一篇: Linux 安装 Elasticsear