全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

关于Linux下对于makefile的理解

什么是makefile呢?在Linux下makefile我们可以把理解为工程的编译规则。一个工程中源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,那些文件需要先编译,那些文件需要后编译,那些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可执行操作系统的命令。

makefile带来的好处就是---“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大地提高了软件开发的效率。

make命令在执行时,需要一个makefile文件,以告诉make命令要怎样去编译链接程序。只要我们makefile写的足够好,make命令会自动智能的根据当前文件自己编译所需要的文件和链接目标文件。

makefile的规则:

target:prerequisites

  command

.......................

target是目标文件,prerequisites就是要生成target所需要的文件或是目标。command就是make需要执行的命令。这是一个文件依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。如果prerequisites中如果有一个以上的文件比target文件内容要新的话,command所定义的文件就会被执行。这就是makefile最核心的内容。

举个栗子:

先准备三个文件:file1.c,file2.c,file2.h

file1.c:

#include<iostream>

int main()

{

file2printf();

return 0;

}

file2.h:

#ifndef FILE2_H_

#define FILE2_H_

void file2printf();

#endif

file2.c

#include"file2.h"

void file2printf()

{

printf("hello world!\n");

}

那么它的makefile怎么写呢?(makefile文件和文件在同一目录下)

test:file1.o file2.o          //test依赖file1.o和file2.o两个目标文件

  gcc -c file1.o file2.o -o test    //编译出test可执行文件,-o 表示指定的目标文件名

file1.o:file1.c file2.h          //编译出file1.o文件,file1.o依赖于file1.c和file2.h,-c表示GCC只把给他的文件编译成目标文件  

  gcc -c file1.c -o file1.o

file2.o:file2.c file2.h                       //这两句与上两句相同

  gcc -c file2.c -o file2.o

.PHONY:clean

clean:

rm -rf* .o test      //当输入make clean命令时,就会删除所有的.o文件和test文件了

注意:每个命令行之前都必须有tab符号。

这是简单的makefile的写法,其实makefile还有很多的功能注意点值得学习。大家可以下去自行学习

以上这篇关于Linux下对于makefile的理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# linux下makefile  # Linux里Makefile是什么?它是如何工作的?  # Linux 中makefile的命令包定义及使用  # Linux下Makefile的编写与使用详解  # 就会  # 给大家  # 两句  # 所需要  # 这是  # 这一  # 放在  # 就像  # 多个  # 这就是  # 依赖于  # 也可  # 这是一个  # 我们可以  # 希望能  # 只需要  # 这篇  # 还有很多  # 小编  # 命令行 


相关文章: 行程制作网站有哪些,第三方机票电子行程单怎么开?  如何配置WinSCP新建站点的密钥验证步骤?  详解jQuery中基本的动画方法  如何在建站宝盒中设置产品搜索功能?  Android使用GridView实现日历的简单功能  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  建站主机无法访问?如何排查域名与服务器问题  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Swift中swift中的switch 语句  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  定制建站流程解析:需求评估与SEO优化功能开发指南  制作农业网站的软件,比较好的农业网站推荐一下?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  深圳网站制作案例,网页的相关名词有哪些?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  香港服务器WordPress建站指南:SEO优化与高效部署策略  香港服务器网站推广:SEO优化与外贸独立站搭建策略  制作网站的软件免费下载,免费制作app哪个平台好?  如何高效利用亚马逊云主机搭建企业网站?  北京制作网站的公司,北京铁路集团官方网站?  定制建站价位费用解析与套餐推荐全攻略  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  代刷网站制作软件,别人代刷火车票靠谱吗?  如何快速选择适合个人网站的云服务器配置?  建站主机选购指南:核心配置优化与品牌推荐方案  建站主机是否等同于虚拟主机?  家庭建站与云服务器建站,如何选择更优?  建站之星后台密码遗忘如何找回?  ,巨量百应是干嘛的?  SQL查询语句优化的实用方法总结  如何选择靠谱的建站公司加盟品牌?  教程网站设计制作软件,怎么创建自己的一个网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  Python如何创建带属性的XML节点  公司网站的制作公司,企业网站制作基本流程有哪些?  如何在Golang中指定模块版本_使用go.mod控制版本号  视频网站app制作软件,有什么好的视频聊天网站或者软件?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  如何配置IIS站点权限与局域网访问?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何高效完成独享虚拟主机建站?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  北京网站制作公司哪家好一点,北京租房网站有哪些?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何高效完成自助建站业务培训?  视频网站制作教程,怎么样制作优酷网的小视频?  制作营销网站公司,淘特是干什么用的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。