linux 工程管理器make

  1. 作用:make是linux中的工程自动编译管理器,由若干个程序文件组成,包括有且仅有一个的主函数,还有被主函数调用的其他函数,全部放到一起,make能够根据文件时间戳自动识别哪些文件被修改过,然后在make命令时,只编译修改过的,未修改的不编译,能够提高程序编译、存储效率;

  1. 工程文件名默认是makefile,大小写均可,但是不能同时存在,否则,系统会直接选择小写开头的makefile,当你把编译规则放到以大写开头的Makefile时,可能造成程序编译错误;

  1. makefile里面是存放编译规则的,主要包括三个内容:

①建立目标体(target),以及目标文件、可执行文件,文件之间都以空格相隔开 //目标体是终极文件,后面所有的文件和命令都是为其服务的

②创建目标体所依赖的文件

③创建目标体运行的命令 //这一行必须以制表键(tab)开头

  1. 以加减乘除的例子详述makefile的使用用法↓

vim makefile //进入vim编辑器

main:main.o add.o sub.o mul.o div.o
    gcc -o main main.o add.o sub.o mul.o div.o
main.o:main.c
    gcc -c main.c -o main.o -I./
add.o:add.c
    gcc -c add.c -o add.o
sub.o:sub.c
    gcc -c sub.c -o sub.o
mul.o:mul.c
    gcc -c mul.c -o mul.o
div.o:div.c
    gcc -c div.c -o div.o
clean:   //以下两行是尾目标命令,不需要依赖文件,作用是上述任务完成后,执行第14行命令;
    rm -f main.o add.o sub.o mul.o div.o    //clean也可以有依赖文件,例如依赖文件是install,第14行是复制或者移动文件命令,则13与14行实现了程序安装功能;

$:make //使用make命令进行编译

... //显示上述已经定义的编译规则与文件依附关系

... //提示已经完成make,生成了math可执行文件

./main //即可执行程序,输入输出结果

  1. 自定义变量

上述程序中存在多处main.o add.o sub.o mul.o div.o,可以采用以下命令将该部分内容利用一个自定义变量代替,减少重复输入量:

obj:main.o add.o sub.o mul.o div.o
main:$(obj)    //即取该自定义变量的定义的内容
    gcc $(obj) -o main
  1. client模板,提供的模板包含以下文件:

[check_putin] //模板主函数依附的文件之一,删除,我们需要新建自己的依附文件

[include] //头文件,需要进入修改自己的函数声明(extern),.h类文件

[main] //存放main.c以及对应的Makefile,需要进入修改main.c为自己的主函数,Makefile不动

[pack_message] //模板提供的主函数依附文件之一,删除,需要新建自己的依附文件

[scripts] //脚本存放了核心的makefile,需要进入修改自己的target、依赖文件、生成可执行文件的名称

[client] //模板生成的可执行程序文件,删除

[Makefile] //根目录下面的,不动,是用来将scripts中的makefile与依附文件(main.c add.c...)中的makefile联系起来,并输出make done的结束提示

  1. 模板client具体使用用法(以四则运算为例)

cd scripts →修改target以及依附文件#libs,这一行是线程,暂时不需要,用#使其编程解释;然后将target更改成我们想要的可执行文件,例如math;
#并将modules后的文件更改成我们自己的依附文件:main add sub mul div
cd include →修改头文件#删除7行以下,声明四则运算的函数(etern int add(int a,int b)...)
cd main →修改主函数#cd src,rm main.o;vim mian.c,删除9行以下,开始写主程序,注意加上#include<stdio.h>
cd client →创建四个目录,分别对应四则运算#mkdir -p add/src  采用-p连续纵向创建目录;同理创建另外3个;并将main目录下面的Makefile复制到刚新建的四则运算目录下面,命令是cp main/Makefile ./add/
cd ./add/src/ →创建add.c,进行函数定义(不加分号)
cd client →make命令,输出target  math可执行程序,并./math,验证程序结果;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值