日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux-makefile

發(fā)布時(shí)間:2025/3/21 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)文件2

3.實(shí)例

現(xiàn)在我們有如下三個(gè)文件
main.c tool.c tool.h

文件內(nèi)容如下
main.c

#include "tool.h" #include <stdio.h>int main() {int arr[5] = {1,8,6,3,4};int m = find_max(arr,5);printf("%d\n",m);return 0; }

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.o

clean是用于刪除.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.h

bar.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可以更改為

CC = gccmain:main.c foo.o bar.o$(CC) main.c foo.o bar.o -o main foo.o:foo.c$(CC) -c foo.c bar.o:bar.c$(CC) -c bar.c clean:rm *.o main

以后如果我們想用g++編譯的話,就可以把第一行g(shù)cc改為g++
如果我們想加入鏈接時(shí)也可以使用變量來替換.

實(shí)例3

如果我們現(xiàn)在講上面的main.c拆成兩個(gè)分別為main_max.c和main_min.c
main_max.c

#include "foo.h" #include "bar.h" #include <stdio.h>int main() {int arr[] = {1,8,3,4,5};int max = find_max(arr,5);printf("max = %d\n",max);return 0; }

更改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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。