- 博客(29)
- 资源 (9)
- 收藏
- 关注
转载 我所使用的一个通用的Makefile模板
话不多说,请看:我的项目有的目录结构有:dirls/├── include│ └── apue.h├── lib│ ├── error.c│ ├── error.o│ └── Makefile├── src│ ├── dirls.c│ ├── dirls.out│ └── Makefile└── test_client而我的Makefile模板代码...
2018-03-29 14:13:02 312
转载 Makefile所有内嵌函数
一、文本处理函数以下是GNU make内嵌的文本(字符串)处理函数。1 $(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst。函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。返回值:替换后的新字符串。示例:$(subst ee,EE,feet on the street)替换“feet on the street”中的“ee”为“EE”,结果得...
2018-03-29 10:52:08 423
转载 Makefile---make内嵌函数及make命令显示 (九)
这一节我们讲一下make的函数,在之前的章节已经讲到了几个函数:wildcard、patsubst、notdir、shell等。一般函数的调用格式如下:123$(funcname arguments)或$(funcname arguments)其中funcname是需要调用函数的函数名称,应该是make内嵌函数;arguments是函数参数,参数和函数名之间使用空格分割,如果存在多个参 数时,参数...
2018-03-28 09:52:33 548
转载 makefile--目录搜索(八)
在一个较大的工程中,一般会将源代码和二进制文件(.o 文件和可执行文件)安排在不同的目录来进行区分管理。这种情况下,我们可以使用 make 提供的目录搜索依赖文件功能(在指定的若干个目录下自动搜索依赖文件)。在Makefile中,使用依赖文件的目录搜索功能。当工程的目录结构发生变化 后,就可以做到不更改 Makefile的规则,只更改依赖文件的搜索目录。 在我们上一节出现的问题当中,我们将...
2018-03-27 17:15:20 390
转载 makefile--模式规则(七)
上一节讲到目录创建成功,目标文件没有生产到对应目录下,这里我们先给目标文件加上对应目录,这样的话产生对应的目标文件会直接生成到对应目录。我们先给库文件目标和可执行文件目标加上路径,如下:123456789101112131415161718lib : $(OBJDIR) $(LIBDIR)/$(SRC_LIB) bin : $(OBJDIR) $(BINDIR)/$(SRC_BIN) ...
2018-03-27 17:13:25 325
转载 makefile--统一目标输出目录 (六)
上一节我们把规则单独提取出来,方便了Makefile的维护,每个模块只需要给出关于自己的一些变量,然后再使用统一的规则Makefile。这一节我 们继续改进我们的Makefile,到目前为止我们的Makefile编译链接输出的目标都在源文件同目录下或模块Makefile同一目录下,当一个项 目大了之后,这样会显得很乱,寻找编译输出的文件也比较困难。既然Makefile本身就是按照我们的的规则来编译...
2018-03-27 17:12:32 4383
转载 makefile--参数传递、条件判断、include (五)
在多个Makefile嵌套调用时,有时我们需要传递一些参数给下一层Makefile。比如我们在顶层Makefile里面定义的打开调试信息变量 DEBUG_SYMBOLS,我们希望在进入子目录执行子Makefile时该变量仍然有效,这是需要将该变量传递给子Makefile,那怎么传递呢? 这里有两种方法:1. 在上层Makefile中使用”export”关键字对需要传递的变量进行声明。比如:...
2018-03-27 17:11:46 1308
转载 makefile--嵌套执行(四)
在大一些的项目里面,所有源代码不会只放在同一个目录,一般各个功能模块的源代码都是分开的,各自放在各自目录下,并且头文件和.c源文件也会有各 自的目录,这样便于项目代码的维护。这样我们可以在每个功能模块目录下都写一个Makefile,各自Makefile处理各自功能的编译链接工作,这样 我们就不必把所有功能的编译链接都放在同一个Makefile里面,这可使得我们的Makefile变得更加简洁,并且编...
2018-03-27 17:09:56 469
转载 Makefile--伪目标 (三)
一般情况下,Makefile都会有一个clean目标,用于清除编译过程中产生的二进制文件。我们在第一节的Makefile就用到了这个 clean目标,该目标没有任何依赖文件,并且该目标对应的命令执行后不会生产clean文件。像这种特点目标,它的规则所定义的命令不是去创建文件,而仅仅通过make指定目标来执行一些特定系统命令或其依赖为目标的规则(如all),称为伪目标。一个Makefile一般都不会...
2018-03-27 17:08:55 406
转载 makefile--变量的使用(二)
仔细研究我们的之前Makefile发现,我们还有改进的地方,就是此处:12target_bin : main.o debug.o ipc.o timer.o tools.o >---gcc -o target_bin main.o debug.o ipc.o timer.o tools.o 如果增加一个源文件xx.c的话,需要在两处或多处增加xx.o文件。我们可以使用变量来解决这个问题。...
2018-03-27 17:07:54 214
转载 Makefile--隐含规则自动推dao(一)
上一节的Makefile勉强可用,但还写的比较繁琐,不够简洁。对每一个.c源文件,都需要写一个生成其对应的.o目标文件的规则,如果有几百个或上千个源文件,都手动来写,还不是很麻烦,这也不够自动化啊。这样,我们把生成.o目标文件的规则全部删除掉,就是这样一个Makefile文件:12345target_bin : main.o debug.o ipc.o timer.o tools.o >--...
2018-03-27 17:06:02 227
转载 Makefile--基本规则(零)
一般一个稍大的linux项目会有很多个源文件组成,最终的可执行程序也是由这许多个源文件编译链接而成的。编译是把一个.c或.cpp文件编译成中间代码.o文件,链接是就使用这些中间代码文件生成可执行文件。比如在当前项目目录下有如下源文件:123# ls common.h debug.c debug.h ipc.c ipc.h main.c tags timer.c timer.h t...
2018-03-27 17:03:49 293
转载 Makefile 使用总结
1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 本篇博客是基于 {精华} 跟我一起写 ...
2018-03-27 14:29:28 253
转载 函数库一般分为静态库和动态库两种。
静态库:是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为”.a”。动态库:与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为”.so”,gcc/g++在编译时默认使用动态库。无论静态库,还是动态库,都是由.o文件创建的。 动态库的编...
2018-03-26 20:52:12 1769
转载 gcc/g++ 实战之编译的四个过程
gcc和g++分别是GNU(一个开源组织)的c&c++编译器对于.c后缀的文件,gcc把它当做是C程序,g++当做是C++程序;对于.cpp后缀的文件,gcc和g++都会当做c++程序。gcc可以根据后缀名为.c或.cpp分别按c程序和c++程序来编译,但是g++无论是.c或.cpp都统一按c++程序来编译。编译阶段,g++会调用gcc,链接阶段通常会用g++来完成,g++在编译的过程中,...
2018-03-26 20:42:12 147
转载 Makefile 静态模式——$(objects): %.o: %.c
静态模式最近看Makefile,正常依赖没什么问题,但是遇到一些特殊的符号就有点不明白了,例如:$(objects): %.o: %.c、$<之类的。最近看了篇文章写的不错,贴出来供大家分享。静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法:<targets ...>: <target-pattern>: <...
2018-03-26 20:26:17 18166 5
转载 C++ 类中的static成员的初始化和特点
测试代码(g++编译通过):#include <iostream>using namespace std;class Test{public: Test() : y(1), r(y), d(3){} //对于常量型成员变量和引用型成员变量,必须通过参数化列表的方式进行初始化。 ~Test(){} int y; //普通变量成员 i...
2018-03-26 18:45:43 358
转载 Makefile的简单编写
当我们的工程越来越大的以后,每次都使用命令编译显得非常的麻烦.所以我们需要一个自动化编译的工具来帮助我们编译.在我们使用源码安装软件的时候都会有make,make install等操作,这个就是使用Makefile来进行自动化编译的工作的.Makefile也是一个脚本文件和shell脚本非常的相似,但是也有很多的地方不一样.程序编译通常会有一下几个步骤,先是预编译,然后将C语言代码编译成汇编,然后...
2018-03-26 15:34:08 1144
转载 AVL树详解
AVL树定义:AVL树又称为高度平衡的二叉搜索树。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。AVL树性质:左子树和右子树的高度之差的绝对值不超过1树中的每个左子树和右子树都是AVL树每个节点都有一个平衡因子(balance factor--bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因子等于右子树的高度减去左子树的高度 ) AVL树效率:一棵AVL树有...
2018-03-06 16:54:19 406
转载 跟我一起写Makefile:使用变量
使用变量在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有...
2018-03-05 21:02:51 240
转载 万能多用途简洁的Makefile
############################################################### 简洁通用的Makefile文件(Ver 1.1)## Smart Makefile for general purpose (Ver 1.1)## Author: 汤 永康 Yongkang TANG <tangyk%at%gmail>## Lice...
2018-03-05 20:36:34 236
转载 Linux下C++的通用Makefile与解析
本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。号称万能Makefile,一统江湖。我对原版的Makefile做了些修改。首先揭开它的庐山真面目:##################################################### Generic makefile - 万能...
2018-03-05 20:15:48 223
转载 Linux 应用---make及makefile的编写
Make 在我们做linux 开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。 而Makefile是Make读入的唯一配...
2018-03-05 19:39:57 429
转载 AVL树之 C++的实现
AVL树的介绍AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都<=1;而右边的不是AVL树,因为7的两颗子树的高度相差为2(以2为根节点的树的高度是3,而以8为根节点的树的高度是1)。 AVL树的C++实现1. 节点1.1 AVL树节点template <class T>...
2018-03-04 19:05:04 512
转载 二叉查找树 C++实现(含完整代码)
一般二叉树的查找是通过遍历整棵二叉树实现,效率较低。二叉查找树是一种特殊的二叉树,可以提高查找的效率。二叉查找树又称为二叉排序树或二叉搜索树。 二叉查找树的定义 二叉排序树(Binary Search Tree)又称二叉排序树(Binary Sort Tree),或者是一颗空二叉树,或者是具有一下特性的二叉树: 若它的左子树不为空,则左子树上的所有结点的值均小于根节点的值...
2018-03-03 18:43:24 4791 1
转载 常用负载均衡算法
在服务器集群中,为了避免某一台服务器因过载而崩溃,除了每台服务器限定了最大连接数外,还对服务器的负载进行了均分。本文介绍了几个常见的负载均衡算法。随机通过随机数生成算法从服务器组中选取一个,然后把请求发送给它。轮询所有的服务器组成一个队列,不管连接数、响应时间,从队列首取出一个,然后放到队尾,不断循环。最终把所有的请求平均分给所有的服务器。适用于服务器性能差异不大的情况。加权轮询给每台服务器加一个...
2018-03-03 14:10:17 327
转载 Linux C++ 服务器端这条线怎么走?
作者:陈硕链接:https://www.zhihu.com/question/22608820/answer/21968467来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。下面简单谈谈我对学习这两门课的看法...
2018-03-03 11:20:03 192
转载 C++ traits编程技法之__type_traits
//以下是铺垫,__type_trivial的作用在后面,下面是一些概念性介绍。 __type_trivial 双底线前缀,表示是SGI STL以外的东西,不在STL标准范围之内。__type_trivial负责萃取型别(Type)的特性,究竟是什么特性呢? 注:trivial是英文“无意义的、不重要”的意思。 答曰:这个型别是否具备non-trivialdefa...
2018-03-02 20:27:32 827
微服务设计(中文完整版)
2018-05-30
重构:改善既有代码的设计
2018-05-24
effective c++(第3版)
2018-05-24
第一本Docker书带书签目录(完整版)
2018-05-22
[精通正则表达式(第三版)].(美)佛瑞德.扫描版
2018-05-22
The_AWK_Programming_Language中文
2018-05-22
sed与awk(第二版)
2018-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人