20170724进一步深入Makefile

进一步深入Makefile

声明:文章中所用到的prog.c、code.c、code.h这三个文件来源于实验楼

一.编写3个文件

 vim prog.c 

#include <stdio.h>
#include "code.h"
int main(void)
{
    int i = 1;      
    printf ("myfun(i) = %d\n", myfun(i));
}


vim code.c

#include "code.h"
int myfun(int in)
{
    return in + 1;
}


vim code.h

extern int myfun(int);

二.编译方式

1.直接编译:

gcc  -c  code.c  -o  code.o
gcc  -c  prog.c  -o   prog.o

gcc -o  test  prog.o  code.o  或者   gcc  prog.o  code.o  -o  test

./test 


2.makefile编译

第一种方式:

test: prog.ocode.o

    gcc prog.o code.o -o test     #这个前面是tab按键,不要忘记

prog.o: prog.ccode.h

    gcc -c prog.c -o prog.o         #这个前面是tab按键,不要弄错

code.o: code.ccode.h

    gcc -c code.c -o code.o         #这个前面是tab按键,不要弄错

clean:

    rm -f *.o test                             #这个前面是tab按键,不要弄错

第二种方式:

test: prog.ocode.o

gcc -o test prog.o code.o      #这个前面是tab按键,不要弄错

clean:

rm -f *.o test                              #这个前面是tab按键,不要弄错

第三种方式:

LIBS=-lm

OBJS=prog.ocode.o

test:${OBJS}

    gcc -o test ${OBJS} ${LIBS}         #这个前面是tab按键,不要弄错

clean:

    rm -f test ${OBJS}                            #这个前面是tab按键,不要弄错

这三种方法中,第三种的可移植性最好。

其中第三种方法还可以再改写:

LIBS=-lm

OBJS=prog.ocode.o

CC=gcc

test:${OBJS}

   $(CC) -o  $@  ${OBJS} ${LIBS}         #这个前面是tab按键,不要弄错,$@代表当前的目标test

clean:

    rm -f test ${OBJS}                            #这个前面是tab按键,不要弄错



Makefile文件的一般写法:

test(目标文件): prog.o code.o(依赖文件列表)
tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
.......











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值