利用makefile实现c语言项目编译
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用makefile实现c语言项目编译相关的知识,希望对你有一定的参考价值。
参考技术A 本周操作系统课的实验是用c语言实现10个进程调度算法。这个项目中有多个.h头文件和.c源文件,利用makefile可以很轻松地找到所有项目文件之间的关系并实现编译。虽然makefile的基本框架学校已经提供的,但身为c语言小白,连如何利用make指令来使用这份makefile都不知道,更别说要往这里面增加自己添加的文件。就记录下这篇笔记给自己以及需要的朋友参考。
先贴上这份makefile,注释是自己后来添加的:
在终端进入makefile所在的目录,使用make,就可以使用我们在makefile中申明的指令,如debug、run和clean。
http://www.ruanyifeng.com/blog/2015/02/make.html
https://blog.csdn.net/zhaocuit/article/details/74782789
Linux-C-Program:makefile
注:本文参照博客:https://blog.csdn.net/initphp/article/details/7692923
1. 概述
Makefile是一个C语言的程序编译规则。它能够帮助C语言建立自动化编译流程。一旦写好,便可以通过执行make命令,来编译整个工程。
2. 示例说明
创建项目如下:
val.h和val.c
val.h
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int val(int *x);
val.c
#include "val.h"
int val(int *x) {
puts("This is value=");
printf("x:%d
",*x);
return 0;
}
get.h和get.c
get.h
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int get(int *x,int *y);
get.c
#include "get.h"
int get(int *x,int *y) {
puts("This is get");
return(*x)*(*y);
}
sum.h和sum.c
sum.h
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int sum(int *x,int *y);
sum.c
#include "sum.h"
#include "val.h"
int sum(int *x,int *y){
val(x);
puts("This is sum method");
return *x + *y;
}
main.c
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include "sum.h"
#include "get.h"
int main(){
int x = 10;
int y = 20;
int z = sum(&x,&y);
puts("This is Main");
printf("z:%d
",z);
x = 20;
z = get(&x,&y);
printf("z:%d
",z);
return 1;
}
2.1 无makefile编译
生成中间目标文件
执行:gcc -c val.c get.c sum.c main.c
生成可执行文件
执行:gcc -o main main.o val.o sum.o get.o
2.2 有makefile编译
编辑makefile文件
main: get.o sum.o val.o main.o
gcc -o main get.o sum.o val.o main.o
main.o:main.c
gcc -c main.c
val.o:val.h val.c
gcc -c val.c
sum.o:val.h sum.h sum.c
gcc -c sum.c
get.o:get.h get.c
gcc -c get.c
clean:
rm -rf *.o
执行make命令
以上是关于利用makefile实现c语言项目编译的主要内容,如果未能解决你的问题,请参考以下文章