Linux-makefile
生活随笔
收集整理的這篇文章主要介紹了
Linux-makefile
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. make的優點
2.makefile基本語法
目標(target):目標文件1 目標文件2gcc -o 欲新建的可執行文件 目標文件1 目標文件23.實例
現在我們有如下三個文件
main.c tool.c tool.h
文件內容如下
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命令行執行make
[ubuntu@VM-48-245-ubuntu ~/makefile_test]$ make可以看到輸出文件如下
main main.c makefile tool.c tool.h tool.oclean是用于刪除.o結尾的文件和main文件,執行make clean
make clean之后文件只剩下
main.c makefile tool.c tool.h實例2
現在有如下文件
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分別是兩個函數的聲明,這里不再列出,然后是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.運用變量時,以 ${變量} 或 $(變量) 使用
此時makefile可以更改為
以后如果我們想用g++編譯的話,就可以把第一行gcc改為g++
如果我們想加入鏈接時也可以使用變量來替換.
實例3
如果我們現在講上面的main.c拆成兩個分別為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執行make后,發現只執行了第一條記錄
為了全部執行,將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現在兩個都可以編譯了
可以看到兩個文件都已出現
總結
以上是生活随笔為你收集整理的Linux-makefile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scrapy-css选择器
- 下一篇: GCC编译简单范例