本文转载自:https://blog.csdn.net/haoel/article/details/2886

工欲善其事,必先利其器.

  • 首页
  • 博客
  • 学院
  • 下载
  • 图文课
  • 论坛
  • APP
  • 问答
  • 商城
  • 活动
  • VIP会员
  • 招聘
  • ITeye
  • GitChat
  • 写博客
  • 小程序
  • 消息
  • 一个很好的makefile例子

    05-07 4373

  • Makefile中$@,$^,$<

    05-17 954

  • makefile

    09-20 897

  • makefile '@' '$' '$$' '-' '-n ' 使用小结

    06-04 3037

  • 转载一个大神的Makefile

    07-08 391

  • 【免费】《跟我一起写Makefile.pdf》带书签目录 高清完整版

    11-24立即下载

  • 跟我一起写makefile总结

    01-18 3045

  • Makefile新手向教程:跟着+c同学step by step写makefile

    04-25 1272

  • Makefile

    10-13 461

  • Makefile 语法入门

    09-14 1929

  • Makefile 的运行(六)

    05-07 2698

  • makefile .d的解释

    09-26 356

  • Cmake和makefile

    06-24 2532

  • Makefile系列之规则

    08-13 851

  • Makefile编写实例(生成so文件)

    12-15 2176

  • Makefile基础教程 10

    09-10 2110

  • makefile 中使用了$<是啥意思?

    01-21

  • makeFile文件作用是什么

    05-23 690

  • 1.makefile的作用是什么?

    08-06 1437

  • makefile中的CPPFLAGS LDFLAGS CFLAGS选项详解

    04-02 4428

  • make/Makefile的用法

    04-02 161

  • 自己写一个简单通用的Makefile

    08-03 3074

  • 【Linux】Makefile是什么,怎么写Makefile?

    03-25 509

  • makefile 使用方法

    04-23 164

  • Makefile中 -I -L -l区别

    06-01 637

  • MakeFile .o .d文件放入指定的文件夹

    05-23 2262

  • Makefile中的匹配符%

    03-18 46

  • linux的makefile -I(大写i)-L(大写l)-l(小写l)

    09-01 1543

  • 【PE/makefile】编译标记EXTRA_CFLAGS介绍和使用方法

    03-24 2097

  • Makefile经典教程(掌握这些足够)

    07-31 587017

跟我一起写 Makefile(一)

2004年02月24日 16:48:00 haoel 阅读数:422738

跟我一起写 Makefile

陈皓

概述
——

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。

因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

现在讲述如何写makefile的文章比较少,这是我想写这篇文章的原因。当然,不同产商的make各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章,这里,我仅对GNU的make进行讲述,我的环境是RedHat Linux 8.0,make的版本是3.80。必竟,这个make是应用最为广泛的,也是用得最多的。而且其还是最遵循于IEEE 1003.2-1992 标准的(POSIX.2)。

在这篇文档中,将以C/C++的源码作为我们基础,所以必然涉及一些关于C/C++的编译的知识,相关于这方面的内容,还请各位查看相关的编译器的文档。这里所默认的编译器是UNIX下的GCC和CC。

关于程序的编译和链接
——————————

在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。

编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。

链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。

总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的Object File.

好,言归正传,GNU的make有许多的内容,闲言少叙,还是让我们开始吧。

Makefile 介绍
———————

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:
    1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
    2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
    3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。

只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。

一、Makefile的规则

在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。

target ... : prerequisites ...
            command
            ...
            ...

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。

command也就是make需要执行的命令。(任意的Shell命令)

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

说到底,Makefile的东西就是这样一点,好像我的这篇文档也该结束了。呵呵。还不尽然,这是Makefile的主线和核心,但要写好一个Makefile还不够,我会以后面一点一点地结合我的工作经验给你慢慢到来。内容还多着呢。:)

二、一个示例

正如前面所说的,如果一个工程有3个头文件,和8个C文件,我们为了完成前面所述的那三个规则,我们的Makefile应该是下面的这个样子的。

edit : main.o kbd.o command.o display.o /
           insert.o search.o files.o utils.o
            cc -o edit main.o kbd.o command.o display.o /
                       insert.o search.o files.o utils.o

main.o : main.c defs.h
            cc -c main.c
    kbd.o : kbd.c defs.h command.h
            cc -c kbd.c
    command.o : command.c defs.h command.h
            cc -c command.c
    display.o : display.c defs.h buffer.h
            cc -c display.c
    insert.o : insert.c defs.h buffer.h
            cc -c insert.c
    search.o : search.c defs.h buffer.h
            cc -c search.c
    files.o : files.c defs.h buffer.h command.h
            cc -c files.c
    utils.o : utils.c defs.h
            cc -c utils.c
    clean :
            rm edit main.o kbd.o command.o display.o /
               insert.o search.o files.o utils.o

反斜杠(/)是换行符的意思。这样比较便于Makefile的易读。我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了。

在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit 的依赖文件。依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。

在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作的,他只管执行所定义的命令。make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么,make就会执行后续定义的命令。

这里要说明一点的是,clean不是一个文件,它只不过是一个动作名字,有点像C语言中的lable一样,其冒号后什么也没有,那么,make就不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。要执行其后的命令,就要在make命令后明显得指出这个lable的名字。这样的方法非常有用,我们可以在一个makefile中定义不用的编译或是和编译无关的命令,比如程序的打包,程序的备份,等等。

下一页->

(版权所有,转载时请注明作者和出处)

收藏

分享

  • github.com/starRTC: 666(1周前#149楼)

  • 王东南西北: 你好,出现如下错误,应该如何修改呢? Makefile:517:***mixed implicit and normal rules. stop. 517:platform.mk \ 518:%: %_config 519: $(MAKE)(3周前#148楼)

  • 智在千里: 竟然是15年前写的,作者现在还在一线工作吗(3周前#147楼)

  • zjq985062714: https://seisman.github.io/how-to-write-makefile/overview.html这里的更详细,更清楚。(1个月前#146楼)查看回复(1)

    1

  • Dablelv: 请问皓神是参考make官网的英文资料来写的吗?(1个月前#145楼)

  • 百年人生当疯狂: 跟我一起写 Makefile(二) https://blog.csdn.net/haoel/article/details/2887(2个月前#144楼)

    3

  • zuosidelord: 谢谢(2个月前#143楼)

  • 桥是我老大: xiexie(2个月前#142楼)

  • 桥是我老大: ganxiedalao(2个月前#141楼)

  • 醉大侠: 跟着大佬,走向人生巅峰 :)(3个月前#140楼)

  • BOyyyyyy: 下一页链接https://blog.csdn.net/haoel/article/details/2887(5个月前#139楼)

  • hzw05103020: 下一页返回404了,求博主更新下。。谢谢。。。(5个月前#138楼)

  • *小呆: 反复看了几遍,尽管是10多年的文章了,多谢您的无私分享(5个月前#137楼)

  • Patrick-Star: 大神,我可以转载你的这篇文章吗?我会标明出处并附带链接的,多谢大神(9个月前#136楼)

  • xiaoyaoyao17: 原来这就是左耳朵耗子!果然有水平!(9个月前#135楼)

查看 172 条热评

跟我一起写 Makefile(二)

阅读数 7万+

三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么,   1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。   2、如果找到,它会找文件中的...博文来自: 陈皓专栏 【空谷幽兰,心如皓月】

跟我一起Makefile(整理版)

阅读数 1万+

跟我一起写Makefile陈皓(博客地址:http://blog.csdn.net/haoel/article/details/2886)整理的PDF文件:http://download.csdn.n...博文来自: xiaoshuai537的博客

跟我一起写 Makefile(三)

阅读数 8万+

Makefile总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目...博文来自: 陈皓专栏 【空谷幽兰,心如皓月】

Linux makefile 教程 非常详细,且易懂

阅读数 70万+

最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。           于是google到了以下这...博文来自: ENDLESS

Makefile常用模板

阅读数 2170

做开发的特别是C/C++开发者一般都会用到Makefile,然而多数时候在公司做项目都不需要自己去写Makefile,仅仅停留在能看懂的基础上。因为make命令编译实在是太方便了,所以自己写写小项目用...博文来自: 彼此当年少,莫负好时光

教你写Makefile(很全,含有工作经验的)

阅读数 4402

原文转载文Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。    什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的I...博文来自: 心之所向

makefile 学习

阅读数 242

本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。 在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序文件有所增...博文来自: boshuzhang的专栏

Linux项目自动化构建工具-make/Makefile

阅读数 239

操作系统中有一个命令叫makemakefile中记录的是一系列的编译规则,当我们执行make命令,那么make这个程序就会当前目录下查找makefile文件,然后一步步的解释执行makefile中记录...博文来自: Calm的博客

C++之makefile写法

阅读数 3486

参考:https://www.cnblogs.com/owlman/p/5514724.html什么是makefileMakefile文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件...博文来自: ZONGXP的博客

...Makefile(八) - 陈皓专栏 【空谷幽兰,心如皓月】 - CSDN博客...

10-31

来自: 陈皓专栏 【空谷幽兰,心如皓月】 跟我一起写Makefile(七) 02-25 2.6万 使用变量———在Makefile中的定义的变量,就像是C/C++语言中的宏一样,...

跟我一起写 Makefile(一) - 陈皓专栏 【空谷幽兰,心如..._CSDN博客

4-18

为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要...博文 来自: 陈皓专栏 【空谷幽兰,心如皓月】 跟我一起写Makefile(整理版) ...

Makefile工程实践视频课程(第2季):使用Autotools自动生成Makefile

手写makefile太难了!浪费时间不说,还容易出问题!本门课程通过Autotools三剑客:automake、autoconf、libtool的使用,介绍如何使用这些工具去自动生成一个项目的Makefile:包括flat、shallow、deep等各种项目目录结构。通过掌握makefile.am变量语法以及autoconf宏的配置使用,让您能够熟练掌握去生成、维护一个项目Makefile。学院讲师:王利涛

Makefile教程(绝对经典,所有问题看这一篇足够了)

阅读数 6万+

该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886makefile很重要  ...博文来自: weixin_38391755的博客

...Makefile(二) - 陈皓专栏 【空谷幽兰,心如皓月】 - CSDN博客...

10-30

在默认的方式下,也就是我们只输入make命令。那么,     1、make会在当前...来自: 陈皓专栏 【空谷幽兰,心如皓月】 跟我一起写Makefile(整理版) 02...

...Makefile(五) - 陈皓专栏 【空谷幽兰,心如皓月】 - CSDN博客...

11-19

Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时...跟我一起写Makefile(一) - 陈皓专栏 【空谷幽兰,心如皓月】 02-24 39.7...

一个很好的makefile例子

阅读数 4373

欢迎来到我的酒馆  从头讲一门工具总是显得很难,我们先从一个小项目切入。先不管怎么写一个牛逼的(一长串)、华丽的(看不懂,有点像代码的)makefile。我这里找了一非常简洁的项目:tinyhttpd...博文来自: sfuncc的博客

跟我一起写 Makefile(十三) - 陈皓专栏 【空谷幽兰,心如皓月】 - ...

9-30

最近为了搞懂makefile,精读了陈皓的《跟我一起写makefile》,算是基本搞明白了makefile的各种基本规则和变量了,下面总结如下,以备后面忘记的时候查阅。现在也有了很...

...Makefile(四) - 陈皓专栏 【空谷幽兰,心如皓月】 - CSDN博客...

10-16

书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标...

Makefile中$@,$^,$<

阅读数 954

$@——目标文件;$^——所有依赖文件;$&amp;lt;——第一个依赖文件。例如:下面是一个Makefile:main:main.omytool1.omytool2.ogcc-omainmain.o...博文来自: u011370207的博客

makefile

阅读数 897

#输出文件夹OUTFILE=debug#可执行程序文件夹OUTBIN=bin#连接目标文件夹OBJFILE=obj#判断输出文件夹是否存在,如果不存在自动填充ifneq($(OUTFILE),$(wi...博文来自: 十年磨十剑

跟我一起写 Makefile(十一) - 陈皓专栏 【空谷幽兰,心如皓月】 - ...

12-6

一次地使用了“-f”参数,那么,所有指定的makefile将会被连在一起传递给make...来自: 陈皓专栏 【空谷幽兰,心如皓月】 跟我一起写Makefile(十) 02-24 ...

...Makefile(六) - 陈皓专栏 【空谷幽兰,心如皓月】 - CSDN博客...

11-13

跟我一起写Makefile(八) - 陈皓专栏 【空谷幽兰,心如皓月】 02-25 3.4...用GDB调试程序(一) 阅读量:572468 跟我一起写 Makefile(一) 阅读量:396467...

makefile '@' '$' '$$' '-' '-n ' 使用小结

阅读数 3037

编译代码时,会进程接触makefile,会涉及到一些符号,由于不明白有些意思经常出现问题,在此归纳一下。'@'  符号的使用   通常makefile会将其执行的命令行在执行前输出到屏幕上。如果将‘@...博文来自: snowman的博客

...Makefile(九) - 陈皓专栏 【空谷幽兰,心如皓月】 - CSDN博客...

10-28

在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有...来自: 陈皓专栏 【空谷幽兰,心如皓月】 跟我一起写Makefile(十三) 02-25...

学写makefile(《跟我一起Makefile-陈皓》笔记) - Gik..._CSDN博客

11-16

14、make的系统变量MAKELEVEL表示如果make有一个嵌套执行的动作,那么这个变量会记录...跟我一起写Makefile(一) - 陈皓专栏 【空谷幽兰,心如皓月】 02-24 39.7...

转载一个大神的Makefile

阅读数 391

Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。   什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你...博文来自: weixin_42445727的博客

【免费】《跟我一起Makefile.pdf》带书签目录 高清完整版

11-24

跟我一起写 Makefile 作者:陈皓 整理:祝冬华 【比其他同款资源分更少,从别地重金下载下来后上传分享】 第一部分、概述.....................................

下载

跟我一起makefile总结

阅读数 3045

最近为了搞懂makefile,精读了陈皓的《跟我一起写makefile》,算是基本搞明白了makefile的各种基本规则和变量了,下面总结如下,以备后面忘记的时候查阅。现在也有了很多makefile的...博文来自: 浪子荆的博客

Makefile新手向教程:跟着+c同学step by step写makefile

阅读数 1272

前言最近在写底层C代码需要用到makefile来简化编译流程并优化文件目录结构,一直没找到很好的makefile教程(一个通俗易懂的渐进式的教程),通过+c同学终于是找到了他在之前在学校实训的时候写的...博文来自: 菇星獨行

Makefile

阅读数 461

Makefilemakefile:进行编译+链接编译:将高级语言书写的代码转换为机器可以识别的机器指令。链接:将多个.o文件或者是.o文件与库文件链接成为可以被操作系统执行的可执行文件。链接采用ld工...博文来自: VICTORY2017的博客

Makefile 语法入门

阅读数 1929

一、Makefile简介Makefile是一种常用于编译的脚本语言。它可以更好更方便的管理你的项目的代码编译,节约编译时间(没改动的文件不编译)。注意Makefile文件命令必须是Makefile或者...博文来自: 阿飞的博客

Makefile 的运行(六)

阅读数 2698

一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套...博文来自: 风之痕的博客

makefile .d的解释

阅读数 356

在学写makefile时候,如果要写的好一点高手建议要用个.d文件.我那时候也是非常迷糊,我写的测试代码不用这个也照样运行的很好啊,为什么要写这个东西呢?下面先看这个情况.我们写的这个Makefile...博文来自: p312011150的博客

Cmake和makefile

阅读数 2532

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要...博文来自: 看风景的人lsy

Makefile系列之规则

阅读数 851

规则语法TARGETS:PREREQUISITES(;COMMAND)COMMAND…TARGETS:目标,可以是空格分开的多个文件,也可使用通配符;PREREQUITITES:依赖,根据依赖更新后是...博文来自: GuoSenZQ的专栏

Makefile编写实例(生成so文件)

阅读数 2176

CC=gccXX=g++CFLAGS=-Wall-O-g#TARGET=./msgsql_clientPROTOBUF_INC=/usr/local/shipu/mdpserver/libs/prot...博文来自: cloud-2014的专栏

Makefile基础教程 10

阅读数 2110

一、实验介绍--Makefile变量本次实验将介绍make的变量定义风格,变量的替换引用,环境变量、命令行变量、目标指定变量的使用及自动化变量的使用。1.1实验内容不同的变量风格和赋值风格变量的替换引...博文来自: oxuzhenyi的博客

makefile 中使用了$<是啥意思?

01-21

请教: .c.o: $(CCC) $(CCFLAGS) -c -o $@ $< $(LIBPATH) -DDEBUG 上面两行是makefile中的两行,其中的和是$@啥$<意思?论坛

makeFile文件作用是什么

阅读数 690

其作用如下:makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后...博文来自: weixin_41799483的博客

1.makefile的作用是什么?

阅读数 1437

MakeFile文件是什么?它里面包含什么内容、具有什么作用、怎么使用?下面就来具体说说。    什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE...博文来自: 的博客

makefile中的CPPFLAGS LDFLAGS CFLAGS选项详解

阅读数 4428

让我们先看看Makefile规则中的编译命令通常是怎么写的。 大多数软件包遵守如下约定俗成的规范:#1,首先从源代码生成目标文件(预处理,编译,汇编),"-c"选项表示不执行链接步骤。$(CC)$(C...博文来自: shenhuxi_yu的专栏

make/Makefile的用法

阅读数 161

make/Makefile:1.makemake是一条命令2.makefileMakefile是一个文件,两个搭配起来使用,完成项目自动化处理3.make/Makefile的作用:1.一个工程中的源文...博文来自: qq_37941471的博客

自己写一个简单通用的Makefile

阅读数 3074

一.makefile的作用     Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中记录有文...博文来自: 阳光玻璃杯

【Linux】Makefile是什么,怎么写Makefile

阅读数 509

什么是Makefile?之前我们都是在VS上编写代码,或许不太注重代码是如何运行生成结果的,因为系统在底下实现了这些功能,不过我们当时应该学了,在VS上的代码要经过(预处理-汇编-连接)等步骤才会生成...博文来自: dove1202ly的博客

makefile 使用方法

阅读数 164

&amp;nbsp;Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。&amp;nbsp;&amp;nbsp;&amp;nbsp;什么是makefile?或许很多Wi...博文来自: fsd‘s blog’

Makefile中 -I -L -l区别

阅读数 637

我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc-ohellohello.c-I/home/hello/include-L/...博文来自: yanhe156的博客

MakeFile .o .d文件放入指定的文件夹

阅读数 2262

#########MakefileCOMMON#########c还是c++EXTENSION=c#gcc还是g++CC=gcc#生成的可执行文件名EXE=main#源文件路径空格可以继续添如srcs...博文来自: Cav4ever

Makefile中的匹配符%

阅读数 46

一、匹配符%Make命令允许对文件名,进行类似正则运算的匹配,主要用到的匹配符是%。比如,假定当前目录下有f1.c和f2.c两个源码文件,需要将它们编译为对应的对象文件。%.o:%.c等同于下面的写法...博文来自: 随波一落叶

linux的makefile -I(大写i)-L(大写l)-l(小写l)

阅读数 1543

gcc-ohellohello.c-I/home/hello/include-L/home/hello/lib-lworld上面这句表示在编译hello.c时:-I/home/hello/includ...博文来自: csdn_kou的博客

【PE/makefile】编译标记EXTRA_CFLAGS介绍和使用方法

阅读数 2097

###Date:2018.3.24===========================================================1、介绍  EXTRA_CFLAGS,EXTRA...博文来自: SoaringLee_fighting的技术专栏

Makefile经典教程(掌握这些足够)

阅读数 58万+

makefile很重要   什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程...博文来自: ruglcc's blog

Makefile 经典教程(看完这篇就够了,不信你拉拉进度条)

阅读数 2391

支持原创:http://blog.csdn.net/haoel/article/details/2886makefile很重要什么是makefile?或许很多Winodws的程序员都不知道这个东西,因...博文来自: 一航jason

跟我一起写 Makefile(六)

阅读数 5万+

书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间...博文来自: 陈皓专栏 【空谷幽兰,心如皓月】

Makefile学习笔记

阅读数 423

LinuxMakefile学习笔记学习Makefile的资料1.《跟我一起写makefile》2.《GUNmakemanual》3.《GNUMake项目管理(第三版)》说明:《跟我一起写makefil...博文来自: 在路上

如何创建Makefile

阅读数 602

如何创建Makefile文件呢?为什么要使用Makefile?首先看一个例子:vimax.cintmax(inta,intb){if(a>=b){returna;}else{returnb;}}vim...博文来自: hanlicun的博客

scanf输入格式的一些问题

阅读数 8167

转载自http://blog.csdn.net/txl199106/article/details/40556317scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该sca...博文来自: 不积跬步无以至千里

C 字符串转大小写strupr , strlowr, tolower, toupper

阅读数 3083

转大写char*strupr(char*str){char*orign=str;for(;*str!='\0';str++)*str=toupper(*str);returnorign;}转小写cha...博文来自: linbounconstraint的专栏

跟我一起写 Makefile(十三)

阅读数 2万+

五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符。"%"的意思是表示一个或多个任意字符。在依赖目标中同样可以使用"%",...博文来自: 陈皓专栏 【空谷幽兰,心如皓月】

跟我一起写 Makefile(八)

阅读数 3万+

六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指...博文来自: 陈皓专栏 【空谷幽兰,心如皓月】

跟我一起写 Makefile(九)

阅读数 5万+

使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量...博文来自: 陈皓专栏 【空谷幽兰,心如皓月】

Python2.7.13下载安装全过程(Windows版)

阅读数 2万+

前提:  我下载的Python是windows版本的,演示过程是在win1064位操作系统上安装的。1、下载    进入官网https://www.python.org/,找到Dowdloads,根据...博文来自: Flora's Zone

社会化推荐算法

阅读数 7733

社会化推荐 本文是论文《一种结合推荐对象间关联关系的社会化推荐算法》的笔记(下)。该论文提出的算法是以PMF为框架基础的。因而若对PMF不太了解的话,可以参考我的上一篇文章脑补一下,当然,那篇文章只是...博文来自: 雨石

腾讯视频解析接口

阅读数 4万+

普通流视频(完整视频) http://vv.video.qq.com/geturl?vid=v00149uf4ir&otype=json 高清视频(分段视频) 1080P-fhd,超...博文来自: 专注于互联网架构技术,努力成为一名架构师

frp配置本地服务端口到服务器80端口

阅读数 2万+

搭建环境: ubuntu 16.04 LTS (本地服务计算机) ubuntu 14.04 LTS(阿里云服务器) apache tomcat 7 java 7 frp 0.8.1 linux 搭建...博文来自: Anteoy的博客

python图片处理类之~PIL.Image模块(ios android icon图标自动生成处理)

阅读数 10万+

1.从pyCharm提示下载PIL包  http://www.pythonware.com/products/pil/   2.解压后,进入到目录下 cd /Users/jianan/Dow...博文来自: 专注于cocos+unity+服务器全栈

【小程序】微信小程序开发实践

阅读数 30万+

帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自: 小雨同学的技术博客

MySQL免安装配置方法

阅读数 4389

以前在windows下用的mysql都是通过下载exe格式的安装包来安装使用,今天偶然下到一个免安装版本的,使用了一番,对mysql的启动之类的有了一个重新认识,记录下。 mysql-5.6.16-w...博文来自: fzhmoive的专栏

何为数据库连接池?其工作原理是什么?

阅读数 5万+

连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为...博文来自: Napoleon的专栏

Python 爬虫环境搭建

阅读数 6295

1.下载Python Python下载步骤: (1).进入Python 下载官网:https://www.python.org/getit/ (1)Python 网络爬虫准备 &gt; ima...博文来自: qq_36275193的博客

搭建图片服务器《二》-linux安装nginx

阅读数 7万+

nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl...博文来自: maoyuanming0806的博客

linux上安装Docker(非常简单的安装方法)

阅读数 26万+

最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自: 我走小路的博客

C++卷积神经网络实例:tiny_cnn代码详解(1)——开篇

阅读数 2万+

  在之前完成了《C++开发人脸性别识别教程》系列博客的编写之后,我开始将工作重点转移到与我的研究生课题关联更为密切的深度学习上来。深度学习编程有几个经典的框架,首屈一指的当属Caffe,然后还有Ma...博文来自: 陈俊岭的程序员之路

解决:dubbo找不到dubbo.xsd报错

阅读数 3万+

构建dubbo项目的时候会遇到: Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wil...博文来自: □黑无常□

ubuntu下切换keras的后端

阅读数 4508

找到目录:~/.keras/keras.json如果该目录下没有该文件,你可以手动创建一个。theano: keras.json文件默认配置 { "image_dim_ordering":...博文来自: 教育数据挖掘小小子的专栏

ZXing改横屏识别为竖屏识别-中间极光线,并解决图像拉伸问题

阅读数 4684

好久没上csdn了, 在这里特别想念大家, 最近公司一段时间忙吧,无暇东顾。扫噶,还是直接进入主题吧      大家都知道 直接从google down下来的 zxing二维码扫描 是 在扫描界面 ...博文来自: chonbj的专栏

强连通分量及缩点tarjan算法解析

阅读数 63万+

强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自: 九野的博客

jquery/js实现一个网页同时调用多个倒计时(最新的)

阅读数 51万+

jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自: Websites

关于SpringBoot bean无法注入的问题(与文件包位置有关)

阅读数 23万+

问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统...博文来自: 开发随笔

我的BLOG

  • 陈皓专栏(技 术) (RSS)
  • 酷壳(编程和技术) (RSS)

最新文章

  • 再谈“我是怎么招聘程序员的”
  • C技巧:结构体参数转成不定参数
  • 免费电子书列表
  • 公告:请访问我Blog新站——酷壳 CoolShell.cn
  • 最佳编程语录

个人分类

  • 技术趋势13篇
  • 抄袭事件7篇
  • 编程工具19篇
  • 编程语言58篇
  • 职业心情23篇
  • 软件开发28篇
  • 项目管理9篇

展开

归档

  • 2011年4月1篇
  • 2011年2月3篇
  • 2010年9月1篇
  • 2010年8月2篇
  • 2010年7月5篇
  • 2010年5月1篇
  • 2010年4月5篇
  • 2010年1月2篇
  • 2009年12月6篇
  • 2009年11月4篇
  • 2009年10月7篇
  • 2009年9月1篇
  • 2009年8月3篇
  • 2009年7月2篇
  • 2009年6月7篇
  • 2009年5月4篇
  • 2009年4月4篇
  • 2009年3月6篇
  • 2009年2月4篇
  • 2008年10月2篇
  • 2008年5月1篇
  • 2008年4月1篇
  • 2008年3月2篇
  • 2007年12月1篇
  • 2007年7月3篇
  • 2007年5月1篇
  • 2007年3月3篇
  • 2007年1月1篇
  • 2006年11月3篇
  • 2006年10月1篇
  • 2006年5月2篇
  • 2006年3月4篇
  • 2004年6月3篇
  • 2004年2月14篇
  • 2004年1月3篇
  • 2003年12月5篇
  • 2003年7月7篇
  • 2003年6月6篇
  • 2003年5月7篇
  • 2003年4月3篇

展开

热门文章

  • 用GDB调试程序(一)

    阅读数 585972

  • 跟我一起写 Makefile(一)

    阅读数 422588

  • C++ 虚函数表解析

    阅读数 386343

  • 其实Unix很简单

    阅读数 150081

  • C++ 对象的内存布局(上)

    阅读数 139075

最新评论

  • C++ 虚函数表解析

    u010855770:我们知道,子类没有重载父类的虚函数是一件毫无意义的事情。因为多态也是要基于函数重载的。虽然在上面的图中我们可以看到Base1的虚表中有Derive的虚函数,但我们根本不可能使用下面的语句来调用子类的自有虚函数 重载是重写吧。。。

  • C++ 虚函数表解析

    qq_41620518:[reply]qq_37752223[/reply] 但要知道为什么第一种方式用十进制表示,第二种用十六进制表示

  • C++ 虚函数表解析

    xipitu:[reply]qq_41620518[/reply] 说得很清楚,谢谢

  • 跟我一起写 Makefile(十四)

    weixin_38690832:谢谢大佬

  • 跟我一起写 Makefile(十四)

    weixin_38690832:[reply]qq_42371913[/reply] 感谢啊,不用翻目录,十分感谢!!

【转载】跟我一起写 Makefile(一)相关推荐

  1. 转载:跟我一起写 Makefile

    陈皓(http://my.csdn.net/haoel) 概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得 ...

  2. (转)跟我一起写 Makefile(一)(陈皓)

    本问转载自陈皓大神的跟我一起写 Makefile(一) 概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要 ...

  3. 跟我一起写 Makefile(一)【转】

    转自:http://blog.csdn.net/haoel/article/details/2886 跟我一起写 Makefile 陈皓 概述 -- 什么是makefile?或许很多Winodws的程 ...

  4. zz Makefile学习教程: 跟我一起写 Makefile

    Makefile学习教程: 跟我一起写 Makefile 转载于:https://www.cnblogs.com/bioinfo/archive/2008/07/07/1237522.html

  5. [转]跟我一起写Makefile系列

    原作者:陈皓专栏 [空谷幽兰,心如皓月] 跟我一起写 Makefile(一) 跟我一起写 Makefile(二) 跟我一起写 Makefile(三) 跟我一起写 Makefile(四) 跟我一起写 M ...

  6. 跟我一起写 Makefile

    [精华] 跟我一起写 Makefile http://www.chinaunix.net 作者:gunguymadman  发表于:2009-06-30 15:55:17 [发表评论][查看原文][C ...

  7. 很不错的教程一步步教你如何写Makefile

    [转载:原文地址:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=408225] 陈皓 概述 -- 什么是makefile?或许很多 ...

  8. 转载一个大神的Makefile

    转载自:http://blog.csdn.net/haoel/article/details/2886  Makefile 值得一提的是,在Makefile中的命令,必须要以[Tab]键开始. 什么是 ...

  9. 女朋友求爱c语言程序,[转载]一个程序员写的求爱程序

    [转载]一个程序员写的求爱程序 set fso=createobject("scripting.filesystemobject") set ws=wscript.createob ...

最新文章

  1. vue右键复制粘贴功能_这可能是最高效的复制粘贴方法
  2. 内置付费 inapp purchase and Error Domain=SKErrorDomain Code=0 “Cannot connect to iTunes Store”错误...
  3. 动态代理-JDK_proxycglib
  4. One-Dimensional Battle Ships CodeForces - 567D
  5. 014 怪物过滤的设计和实现
  6. 若依微服务版怎样新增业务子模块并使用代码生成实现对表的增删改查
  7. 【转】DCMTK开源库的学习笔记1:将DCM文件保存成BMP文件或数据流(即数组)
  8. 【算法】BloomFilter 与 CuckooFilter
  9. 【洛谷】P1111 修复公路
  10. android大屏适配_Android屏幕适配
  11. SpringBoot+Mybatis集成搭建
  12. Egret中的三种单例写法
  13. bzoj1047-理想的正方形(二维单调队列)
  14. Java多线程-马士兵高并发视频教程笔记
  15. 给大家推荐一个资源库https://www.awesomes.cn/
  16. 【opencv】图片拼接
  17. IDEA连接web网页
  18. 趣图:沙雕用户的日常
  19. ETF操作实战记录:2022-2-25
  20. 什么是进程? 为什么使用进程? 如何运用进程?

热门文章

  1. 亚洲的音乐史料及其历史研究状况
  2. QQ邮箱账号异常登录
  3. 通过JS代码简单实现九九乘法表
  4. 自制紧张刺激的滑雪游戏,来一把?
  5. Alexa 世界网站排名研究(下)(转)
  6. eBay Inc(EBAY)2020年第三季度收益电话会议记录
  7. 调频 调幅 与 通信
  8. 编译原理笔记(二)之词法分析
  9. 通过简单的强化学习实现井字棋(Tic-Tac-Toe)
  10. ITIL4 术语词汇表(附下载)