makefile学习----初步理解

lxk0825 lxk0825     2023-01-16     622

关键词:

一.我对makefile的理解:

经过一段时间对makefile的学习,我理解的makefile就是将程序员手动编译源文件的过程用一个脚本执行,这对于小型项目来说,程序员手动执行和用makefile来执行感官上可能没有大的差异,但是对于中大型项目来说,makefile的存在大大提供了程序员编译代码效率,一个好的makefile文件是一个项目健康存在的基础。

 

二.初涉makefile:

   用个简单的例子初步认识下makefile:

源文件:test.cpp:

#include<iostream>

using namespace std;

 

class A

        private:

        int a;

        public:

        A(int i)

       

                a=i;

       

 

        void disp()

       

                cout<<a<<",";

       

;

 

class B

        private:

        int b;

        public:

        B(int j)

       

                b=j;

       

 

        void disp()

       

                cout<<b<<",";

       

;

 

class C:public B,public A

        private:

        int c;

        public:

        C(int k):

        A(k-2),B(k+2)

          

                c=k;

       

 

        void disp()

       

                A::disp();

                B::disp();

                cout<<c<<endl;

       

;

 

int main()

        C obj(10);

        obj.disp();

        return 0;

 

Makefile文件Makefile:

test:test.o

        g++  test.o  -o  test   

test.o:test.cpp

        g++  -c  test.cpp  -o  test.o

 

clean:

        rm  -fr  test  test.o

****************************************************************************

test:test.o                         ---- test是目标文件,也就是最后要生成的可执行文件;

                                               test.o编译源文件产生的中间代码文件;

                                               这行命令的意思是:目标文件test的产生依赖于中间代码文件test.o;

g++  test.o  -o  test           ---- 这行是编译器通过中间代码文件产生目标文件的命令,命令必须以tab键打头,否则执行的时候会报错;这边使用的是g++编

                                               译器,所以你的环境必须安装g++编译器;

test.o:test.cpp                    ----这行的目标文件是test.o,依赖文件是test.cpp;和第一行的格式相同;

g++ -c test.cpp –o test.o     ----这行是通过源文件test.cpp如何生成中间代码文件test.o,是编译命令;

 

clean:

        rm  -fr  test  test.o

 

clean是清除想要删除的文件,执行的时候需要使用命令make clean,一般是删除中间代码文件和最后生成的目标文件,即可执行文件;

 

      在环境中执行make命令,系统就会在目录下自动寻找Makefile、makefile文件,然后执行makefile文件中的内容;同样,你可以指定你自己的makefile文件名,比如:makefile_201020831,执行的时候必须用make –f makefile_201020831;

      Makefile的执行过程是一个递归的过程,目标文件:依赖文件,是使用命令通过依赖文件生成目标文件的过程;

      验证生成的目标文件,即可执行文件,直接./test即可。

makefile入门-初步了解(代码片段)

自己开始学习makefile是由于VScode配置工程文件,看别人的配置不是很懂,于是决定入门学习下makefile。先来说说makefile是做什么用的:对于只有一个或两三个源文件的程序,我们可以直接用g++命令进行编译链接。例如以下程序,fun... 查看详情

spring学习笔记--环境搭建和初步理解ioc

  Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hibernate等其他众多的框架.  下面介绍环境的搭建,首先下载好spring的完... 查看详情

spring框架学习笔记---[spring框架概念,初步上手使用spring,控制反转&依赖注入初步理解](代码片段)

...(4)进行测试(5)测试结束,再看看几个基本的配置属性3.初步学习,看看 查看详情

qt初步学习

...:负责把源码文件、头文件构建成一个Qt工程,并且生成Makefile文件 c、Qt设计器:以画图的方式来进行设计界面,设计出的界面是没有功能的,如果需要完成相应的功能,还要与代码相结合(界面文件可以转换成源码) d、Qt界面... 查看详情

mybatis框架学习笔记---[缓存初步理解](代码片段)

mybatis3版本的文档-->mybatis文档ml一级缓存二级缓存模拟CPU,内存和硬盘之间的关系CPU运行最快,这三个之间的运行速度差距可能会导致并发问题本来,数据在硬盘存着,现在可以考虑把数据缓存到内存上;这样的话,CPU要读取数据,直接... 查看详情

c#对委托的初步理解理解

作为新手对委托的学习:1.定义委托:委托实际上是一个类,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体)public delegatestringTestDelegate(s... 查看详情

对nio的初步理解

...几天可以熟悉掌握的,因此打算后面特意花时间好好学习一下,这里先记录一下已经学习的,对NIO的一些简单理解。BIO说NIO之前,首先了解BIO。BIO是阻塞IO,是面向流的。对于面向流的理解, 查看详情

css初步理解

  近期在学习牛腩的时候遇到了网页的制作。挺新奇的。其中涉及到了有关CSS的知识,于是乎自己也就花费两个小时的时间。找了本浅显易懂的书来看了一遍,从宏观上来了解CSS的相关内容。有关CSS的基础知识详见下链接... 查看详情

spring源码学习的初步体会

Spring源码学习的初步体会:深入学习和巩固java的基础知识,其中的java知识范围全部,可以边研究源码边巩固复习基础知识体会其中用到的设计思想:其中包含的设计原则和设计模式.加深对spring的理解,在业务开发中使用spring更... 查看详情

关于bfc的初步了解以及常见使用

  在学习CSS的过程中,掌握一些常用方法或效果实现的原理对于我们的学习来说是很有帮助的。如最常见的清除浮动和取消外边距塌陷时使用overflow:hidden;,在学习初期往往只知道有这种用法,且使用时会受限,这样在学习掌... 查看详情

git之初步学习

...的GitHub地址是:https://github.com/hbuxiaopipi  Git的初步学习首先让我明白了一个道理:学好英语非常关键。浏览英文网页和使用英文软件对于我这种英语渣渣来讲真是难于登天,但最终我还是借助各种翻译软件和翻译平台再加... 查看详情

makefile

目前见过写的较好的makefile教程,转 http://blog.csdn.net/liang13664759/article/details/1771246,留下学习。  最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。&nbs... 查看详情

kafka初步学习(代码片段)

一、官网教程案例学习 Kafka—分布式消息队列 消息系统消息中间件:缓冲于生产与消费中间缓冲满了,可以进行Kafka的扩容 特性:水平扩展性、容错性、实时、快  Kafka架构:  理解producer、consumer、broke... 查看详情

第十九篇jquery初步学习

jQuery初步学习 jQuery可以理解为是一种脚本,需要到网上下载,它是一个文件,后缀当然是js的文件,它里面封装了很多函数方法,我们直接调用即可,就比方说,我们用JS,写一个显示与隐藏,通常是:div.style.display="none/block... 查看详情

es6函数模块-------初步学习

初步学习:1函数参数允许尾逗号functionclownsEverywhere(param1,param2,//param2后面有逗号){}2函数参数可以赋初值利用解构赋值默认值结合使用函数的length属性失真,是指没有赋初值的函数参数个数3name属性函数的name属性返回该函数名4箭... 查看详情

开发模块化的初步理解

...为业务需求的变更,做了很多模块化处理,为了便于记忆学习,给未来的自己提个醒,特来get此刻的感悟。场景需求:一开始父级下面可能有好几个小模块,但是有一个小模块做的很出色,远远的超出的其他模块。为了利益最大... 查看详情

requirejs的初步掌握

...解的博客供参考。分割线------------------------- 首先,学习requireJS,要知道什么是requireJS.requireJS是一个可在js和node环境下运行的一个非常小巧的一个AMD规范下的js模块载入框架,通俗的理解为模块加载器。 查看详情

小白对于数据库的初步理解

..."数据库"了。想开发一个类似于博客的收藏夹个人主页(学习开发总是从没有意义的事情开始的),其中读取收藏页面的功能就需要涉及到数据,我把每个收藏夹的URL统一存放在一个txt文档中,用Python读取这里面的信息依据模板... 查看详情