Debug与Release以及Linux中makefile

Debug与Release

区别与相同

1、相同

在vs中,debug与release均可进行代码的编译

2、区别

首先,我们通过一个实例来进行演示
在这里插入图片描述
如图是我们创建的一个演示项目,头文件中是add函数和max函数的声明;源文件中创建的三个.c文件分别是add函数,max函数和main函数。
在这里插入图片描述当我们通过debug版本运行代码的时候,在项目路径下会产生一个debug文件夹,这个文件夹是之前没有的,当我们点击编译器中的生成解决方案的时候,debug文件夹会自动在项目路径下产生
查看项目文件
在这里插入图片描述
debug文件夹中包含编译之后生成的.obj文件和项目生成的一些文件。

其次,我们来看一下release下的编译过程
在这里插入图片描述
在这里插入图片描述
可以看到通过release版本,项目生成之后在项目文件下生成release文件。
同样,在release文件夹中也包含编译生成的.obj文件和项目生成所包含的文件。

这两种版本在进行预编译之后,看上去并没有太大的变化,实际上在他们进行预编译之后生成了一个可执行的.exe文件。通过这两个.exe文件,我们可以看到差别。
在这里插入图片描述
在这里插入图片描述
原因在于:

  1. debug版本是开发调试的版本,程序在编译的过程中会包含一些调试信息进去,帮助我们跟踪代码,查找问题,查找bug。
  2. release版本是发行版,程序员已经开发好软件,调试没问题,没有bug,要给客服去用的时候就会用release版本。当我们在开发以后,没有bug,没有问题的时候给用户用的时候,有关调试的一些内容就可以不需要了,让程序精简许多。
    注:release版本不是调试版本,不包含调试信息
    就是因为release版中中不包含调试信息,因此,release版本中的.exe文件的大小才会比debug版本下的小。

补充:release版本下,不能进行断点调试,而在debug版本下,可以进行断点调试。

总结

  • 在release版本中,不包含有关调试的信息,而在debug版本下包含调试的信息。在开发程序的过程中,大部分时间都是在debug版本下进行的,之后在程序开发结束,并且没有bug,没有问题,提交程序给客户的时候才会使用release版本。

  • release版本下不能进行断点调试,而在debug版本下可以进行版本调试

Tips 1

当我们点击生成解决方案的时候,会出现
在这里插入图片描述
当项目中的代码未发生改变的时候,我们再次点击生成解决方案的时候,会出现
在这里插入图片描述
原因是,我们的代码未发生改变,我们再一次编译的时候,与第一次编译生成的文件一模一样,所以不会再次编译,除非改一下代码
在这里插入图片描述

在这里插入图片描述

当我们在return x+y后面加一个空格之后,再次进行编译,
在这里插入图片描述
只有将add.c编译了一下,因为项目中的其他代码没有改变,所以不用编译,上一次编译的.odj文件还在,直接链接.obj就好了。

Tips 2

在windows中,整个工程如何编译,不需要人为的去做比较复杂的操作,我们只需要点击编译器中的生成解决方案即可。那么,

在Linux中怎么能像在windows中一键生成解决方案呢?

我们需要在Linux中写一个Makefile(makefile,这里’m‘的大小写无所谓),就可以达到像windows一样。其实windows中也有一个类似Makefile文件
在这里插入图片描述
makefile文件的类容
在这里插入图片描述
编译
在这里插入图片描述
当代码未改变的时候,再次使用make命令,会出现
在这里插入图片描述
出现和windows一样,由于代码未改变,所以不进行编译。
同理:
在这里插入图片描述
给add函数加上空格之后,再次进行编译
在这里插入图片描述
发现只编译了add.c这个文件,因为只改变了add.c中的代码,其他的代码并没有发生改变。这里就变成和windows中一样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值