makefile笔记(二)_随笔
Makefile速上手前言上一个文档是对《跟我一起写Makefile》的转述。但随着Makfile学习的深入,愈来愈发现Makefile所蕴含的内容不少,对应的奇怪的技巧也不少,因此我认为我们不必一直纠结于一些技巧与特性,先写着再说。所以本次是分享对于一个小的学习项目我们的Makefile的一个通用写法。
就到此为止吧,再通篇写一些概念就不礼貌了。
文章参考了B站up主Cukor丘克的写法,视频教程参考点此进入视频
常使用的文件结构我们一般可以像如下结构一样组织我们的文件:
bin放可执行文件
include放头文件
obj放中间文件
src放源文件
12345678910111213141516gnol@kubt20 ~/makefile_study tree ..├── bin│ └── helloworld├── include│ ├── now_time.h│ └── print.h├── Makefile├── obj│ ├── main.o│ ├── now_time.o│ └── print.o└── src ├── ma ...
makefile笔记(一)_详记
Makefile的书写方式学习参考
本文参考资料(因为是看着参考资料写的笔记,故无法做到无错别字)
跟着SeisMan学习Makefile,参考学习文档
或者点击下载PDF《跟我一起写Makefile》
初部了解makefile规则1234target ... : prerequisites ... command ... ...
我们以上面的一组模板来进行学习:
target –> 可以是一个object file,也可以是执行文件,还可以是label。label与伪目标息息相关。
prerequisites –> 是我们target的依赖文件,比如说main.o是main.out的依赖文件,而main.c main.h有时main.o的依赖文件。
command –> 字面意义上的命令,是本target所要执行的任意shell命令
模仿示例一个简单的例子
小明想要编译一份新手PWN题目,需要关闭NX,关闭stack_protector,关闭PIE,但是每次改代码后重新编译都需要打长长的一串代码,这让小明很难受,你能帮小明写一个mak ...
虚拟机配置PWN环境_详记
环境配置-不仅仅于PWN含有重复造轮子成分,不过开心最重要,生活不只眼前的学习,还有折腾与远方。本文采用虚拟机为vmware workstation。阅读的时候注意边栏的目录,避免错过内容。
序文档目的声明在虚拟机没安装vmtools前无法从windows里复制粘贴文本到vmware中,因此在虚拟机中使用浏览器访问此网站即可解决问题。本文档让你复制粘贴从而加快配置的进度,但过程仍然可能出现问题,请百度/谷歌或问学长解决。(虽然可以有脚本一键配置,但本从0配置来体验Linux系统也是个不错的选择)
如果安装起来有什么疑问,可以加QQ2836924529,或是发邮箱wangzenglong233@qq.com
总而言之,本文没法面面俱到,但是应该够用了,如果遇到问题先再仔细阅读本文档,如果仍然没解决,再去看我B站上传的视频,看看我是怎么操作的,如果视频也没法解决问题,请百度或直接私聊我(有空必回)。
阅读受众声明本文默认读者已经能够使用VMware Workstation安装好Linux虚拟机,且了解一定的Linux下的bash命令或了解一定的Windows下的dos命令。
如果不具备 ...
STL学习笔记(四)_详记
0x00.前言STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。实际上STL组件一共有六个:容器、算法、 迭代器、 仿函数、 适配器(配接器)、 空间配置器。本文学习算法相关知识。
概述:
算法主要是由头文件<algorithm> <functional> <numeric> 组成
<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等
<numeric>体积很小,只包括几个在序列上面进行简单教学运算的模板函数
<functional>定义了一些模板类,用以声明函数对象
0x01.常用遍历算法算法简介:
for_each 遍历容器
transfrom 搬用容器到另一个容器中
for_each函数原型:
for_each(iterator beg,iterator end, _ ...
STL学习笔记(三)_详记
0x00.前言STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。实际上STL组件一共有六个:容器、算法、 迭代器、 仿函数、 适配器(配接器)、 空间配置器。本文学习仿函数相关知识。
0x01.函数对象函数对象概念概念:
重载函数调用操作符的类,其对象常称为函数对象
函数对象使用重载的()时,行为类似函数调用,也叫仿函数
本质:
函数对象(仿函数)是一个类,不是一个函数
函数对象的使用特点:
函数对象在使用时,可以如普通函数一样调用,可以有参数,可以有返回值
函数对象超出普通函数的概念,函数对象可以有自己的状态
函数对象可以作为参数传递
示例:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#inclu ...
STL学习笔记(二)_详记
0x00.前言STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。其中本文包含stack,queue,list,set/multiset,map/multimap 五种容器的相关知识。
0x01.stackstack基础概念概念:stack是一种先进后出(First In Last Out)的数据结构,它只要一个出口
栈只能对栈顶操作,因此无遍历操作
栈中进入元素称为 — 入栈push
栈中弹出元素称为 — 出栈pop
stack基本接口功能描述:栈容器常用的对外接口
构造函数:
stack<T> stk; stack采用模板类实现,此为默认构造形式
stack(const stack& stk); 拷贝构造函数
赋值操作:
stack& operator=(const stack& stk); 重载等号运算符
数据存取:
push(elem); 向栈顶添加元 ...
STL学习笔记(一)_详记
0x00.前言STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。其中本文包含string,vector,deque 三个容器知识。
0x01.stringstring基本概念本质:
string是C++风格的字符串,而string本质上是一个类
string与char * 的区别
char * 是一个指针
string是一个类,类内部封装了char*,管理这个字符串,是一个char * 型的容器
特点:
string类内部封装了很多成员方法例如:find,copy,delete,repalce,insertstring管理char *所分配的内存,因此不用担心复制越界与取值越界等
string构造函数Constructor原型:
string(); 创建一个空字符串,如:string str;string(const cha ...
汇编语言_王爽_简版课程设计1_随笔
0.前言在整个课程中,我们一共有两个课程设计,这是第一个课程设计的简易版本。所谓简易,即数据不涉及到除法溢出,仅用前9个实验的内容即可完成的课程设计。
1.思路分析课程设计1是在实验七+实验九所结合的实验。
以下是我们进行处理以后的数据,是不考虑除法溢出的数据。
123456789101112131415161718192021222324252627data segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992' ...
excel的countif()函数_随笔
0.前言平常的生活中,我们在早上出门后的第一件事不是下楼,而是开门,因为当我们踏出家门的那一刻我们总是意识到还有东西落下。我们做excel表格的时候,总想着会不会漏掉信息,但是反复的思考遗漏信息可能带来的是信息的重复。今天就让我们来用countif()函数来实现查询指定信息出现的次数。
1.countif()1=countif(range,criteria)
首先我们要知道这个函数的作用是什么,从函数名我们能够看出,count是计数,if是条件语句的关键字,合起来那就是统计满足某一种条件的信息出现的次数,接下来就是来学习参数是什么,从而使用它了。
两个参数分别是什么呢,一起认识一下:
参数
作用
range
告知软件我们统计查询的对象出现次数的一个作用区域。
criteria
查询的对象
接下来实战一下,图文结合更容易理解:
123=COUNTIF($O$8:$O$17,N8) 显示王五在姓名2中出现次数为 0 的函数写法(以下两条都是拖动此单元格右下角小点点自动生成)=COUNTIF($O$8:$O$17,N9) 显示龙三在姓名2中出现次数为 1 的函数写 ...