第一个makefile

最近网上看一本《Linux程序设计入门--网络编程》 学习一下gcc方面的知识
先试验一下makefile 怎么用的吧

/*mytool1.h*/
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
viod mytool1_print(char *print_str);
#endif

/*mytool2*/
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif

/*mytool1.c*/
#include "mytool1.h"
void mytool1_print(char *print_str);
{
printf("this is mytool1 print %s\n", print_str);
}

/*mytool2.c*/
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("this is mytool2 print %s\n", print_str);
}

/*main.c*/
#include "mytool1.h"
#include "mytool2.h"
int main(int argc, char **argv)
{
mytool1_print("hello");
mytool2_print("hello");
}



这样五个文件 组成一个小的gcc程序,但是要是编译这样一个程序要用到以下命令:

[b]
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
[/b]

是比较复杂,没改变一个东西都要这样来一遍,更受不了了。

所以有了makefile ,这样把这样呀多次重复的工作,通过简单的方式来做,这样才能显现出计算机的意义才是。

在同一个文件夹中建立一个makefile的文件,没有 后缀名。
内容为:
[b]
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool2.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
[/b]

这样就可以完成任务了,以上的makefile里的行都是成对出现的,第一行列出的是依赖关系,第二行是编译命令。
这样虽然解决了编译麻烦的问题(因为以后编译的时候,一个make指令搞定),但是这样一个makefile文件也够复杂的,呵呵!程序员就是能不复杂就简化它
同样的写就这么几句是不是清爽多了
[b]
main: main.o mytool1.o mytool2.o
gcc -o $@ $^
.c.o
gcc -c $<
[/b]

makefile 也就这么简单,以后编译就不再困难。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值