欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

makefile的使用方法(简单视频教程以及详细文字教程)

发布时间:2025/3/20 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 makefile的使用方法(简单视频教程以及详细文字教程) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 1、makefile详细文字教程
  • 2、makefile简单教程(B站视频教程)
    • makefile基本语法格式:
    • 简单示例(单文件)makefile写法
    • 带包含关系的多文件makefile写法(包含1个文件)
    • 在需要发布源码时,编译后删除可执行文件和.o链接文件的makefile指令(make clean)
    • 带包含关系的多文件makefile写法(包含>=2个文件)
    • makefile指定编译器CC(名字自己定)
    • 增加自定义参数
    • 多个主函数编译生成多个可执行文件的makefile写法(all指令)

1、makefile详细文字教程

Linux makefile 教程 非常详细,且易懂

原文:跟我一起写 Makefile(有什么不懂可以跳转到原文评论区答疑解惑)

2、makefile简单教程(B站视频教程)

参考教程视频链接:教程:Makefile的写法

makefile基本语法格式:

简单示例(单文件)makefile写法

新建文件main.cpp

#include <iostream>using namespace std;int main(){cout << "success!" << endl;return 0; }

新建文件makefile,跟.cpp文件放一起

main:main.cg++ main.c -o main

终端运行

make

结果:

带包含关系的多文件makefile写法(包含1个文件)

yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── main.c ├── makefile ├── tool.c └── tool.h

main.c

#include "tool.h" #include <stdio.h>int main(){int arr[] = {1,8,3,4,5};int m = find_max(arr,5);printf("max = %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

#pragma onceextern int find_max(int arr[], int n);

多文件时,写makefile一般从后往前写

makefile

main:main.c tool.ogcc main.c tool.o -o maintool.o:tool.cgcc -c tool.c

编译:

yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make gcc -c tool.c gcc main.c tool.o -o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$ yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── main ├── main.c ├── makefile ├── tool.c ├── tool.h └── tool.o

.o是链接文件

在需要发布源码时,编译后删除可执行文件和.o链接文件的makefile指令(make clean)

在后面加上这一句:

clean:rm *.o main

makefile

main:main.c tool.ogcc main.c tool.o -o maintool.o:tool.cgcc -c tool.cclean:rm *.o main

这样在我们使用make指令编译后,再使用make clean指令,就能将生成的main和tool.o删除

yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make clean rm *.o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── main.c ├── makefile ├── tool.c └── tool.h0 directories, 4 files yg@ubuntu:~/arnold_test/20210911_makefileTest2$

带包含关系的多文件makefile写法(包含>=2个文件)

yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── bar.c ├── bar.h ├── foo.c ├── foo.h ├── main.c └── makefile0 directories, 6 files yg@ubuntu:~/arnold_test/20210911_makefileTest2$

main.c

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

bar.c

#include "bar.h"int find_min(int arr[], int n){return 1; }

foo.c

#include "foo.h"int find_max(int arr[], int n){return 10; }

bar.h

int find_min(int arr[], int n);

foo.h

int find_max(int arr[], int n);

makefile

main:main.c bar.o foo.ogcc main.c bar.o foo.o -o mainbar.o:bar.cgcc -c bar.cfoo.o:foo.cgcc -c foo.cclean:rm *.o main

运行结果:

yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make gcc -c bar.c gcc -c foo.c gcc main.c bar.o foo.o -o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$ ls bar.c bar.h bar.o foo.c foo.h foo.o main main.c makefile yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make clean rm *.o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$

makefile指定编译器CC(名字自己定)

makefile

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

增加自定义参数

多个主函数编译生成多个可执行文件的makefile写法(all指令)


代码略

makefile

CC = gccall:main_min main_maxmain_min:main_min.c bar.o$(CC) main_min.c bar.o -o main_minmain_max:main_max.c foo.o$(CC) main_max.c foo.o -o main_maxbar.o:bar.c$(CC) -c bar.cfoo.o:foo.c$(CC) -c foo.cclean:rm *.o main_min main_max

运行结果:

yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make gcc -c bar.c gcc main_min.c bar.o -o main_min gcc -c foo.c gcc main_max.c foo.o -o main_max yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── bar.c ├── bar.h ├── bar.o ├── foo.c ├── foo.h ├── foo.o ├── main_max ├── main_max.c ├── main_min ├── main_min.c └── makefile0 directories, 11 files yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make clean rm *.o main_min main_max yg@ubuntu:~/arnold_test/20210911_makefileTest2$ ls bar.c bar.h foo.c foo.h main_max.c main_min.c makefile yg@ubuntu:~/arnold_test/20210911_makefileTest2$

总结

以上是生活随笔为你收集整理的makefile的使用方法(简单视频教程以及详细文字教程)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。