当前位置:首页 » 编程软件 » gcc编译release

gcc编译release

发布时间: 2022-04-15 19:30:46

linux下gcc编译的代码.release和debug版 有什么具体差距

利用gcc的-DDEBUG选项。
1.源文件DEBUG.c中有:
#include<stdio.h>
intmain(intargc,char*argv[])
{
#ifdefDEBUG
printf("DEBUGisdefinded ");
#else
printf("DEBUGisnotdefinded ");
#endif
}
2.Makefile文件为:
DEBUG=
CFLAG=-g
debug:DEBUG.c
gcc$(DEBUG)$(CFLAG)-o$@$^
3.输入:gcc-g-odebugDEBUG.c
./debug
out:DEBUGisnotdefinded
4.输入:gcc-DDEBUG-g-odebugDEBUG.c
./debug
out:DEBUGisdefinded

这样DEBUG版本和release版本都有了.

⑵ 如何使用Cmake生成debug版本和release版本的程序

在Visual Studio中我们可以生成debug版本和release版本的程序,使用Cmake我们也可以达到同样的效果。debug版本的项目生成的可执行文件需要有调试信息并且不需要进行优化,而release版本的不需要调试信息但是需要优化。这些特性在gcc/g++中通过编译时的参数来决定的,如果将优化程度调到最高需要设置 -O3 ,最低的是 -O0 即不做优化,添加调试信息的参数是 -g -ggdb,如果不添加这个参数,调试信息就不会被包含在生成的二进制中

⑶ dev c++ 中的 gcc4.8.1 profiling / release / debug 三种编译器 有什么区别么

debug
调试,可以对软件进行单步执行、堆栈跟踪、调试等操作来发现bug
release
发行版,如果最终调试后程序没有明显bug,可以作为可用的软件分享给他人使用就可以使用这个选项编译。
profiling
性能分析。可以对软件执行过程中的cpu利用率,内存占有进行分析。也可以用来发现、分析异常、bug。

⑷ C语言IDE的Debug和Release版本在命令行的编译选项上有什么区别

编译调试大型程序时使用DEBUG,这种情形下不做任何的代码优化,且会包含所有的调试信息。

RELEASE发布版本,经过DEBUG版本确定没有问题就可以用这个生成带有代码优化和无调试信息的版本,用来给用户使用

编译选项的区别么,依赖具体的编译器,可以参考网页链接

⑸ gcc的三级优化到底优化了哪些

这是个很恶心的问题。我乍一看觉得应该是655我再vc6.0上实验(Debug模式)发现结果是555(vc6debug模式汇编代码)004013A8movdwordptr[ebp-4],5;先将5给[ebp-4]004013AFmoveax,dwordptr[ebp-4];再将5传给eax004013B2pusheax;将eax压栈004013B3movecx,dwordptr[ebp-4];将5==>ecx004013B6movdwordptr[ebp-20h],ecx;将5==>[ebp-20h]004013B9movedx,dwordptr[ebp-20h];将5==>edx004013BCpushedx;将5压栈004013BDmoveax,dwordptr[ebp-4]004013C0pusheax;还是将5压栈004013C1pushoffsetstring"%d%d%d\n"(00426000)004013C6movecx,dwordptr[ebp-4]004013C9addecx,1004013CCmovdwordptr[ebp-4],ecx004013CFcallprintf(00401620)004013D4addesp,10h显而易见结果是555了。不过我为了验证又在release下运行了一把,发现结果竟然是656(vc6release模式汇编代码),10hxoreax,eaxret晕。编译器给优化了。。。显而易见结果是656了还是不死心再看看linux下gcc编译的发现结果也是656(gccdebug)00401326|.C744241C050>movdwordptr[esp+1C],5;|现将5放到[esp+1c]中0040132E|.8B44241Cmoveax,dwordptr[esp+1C];|5==>eax00401332|.FF44241Cincdwordptr[esp+1C];|[esp+1c]++;[esp+1c]等于6了00401336|.8B54241Cmovedx,dwordptr[esp+1C];|6==>edx0040133A|.8954240Cmovdwordptr[esp+C],edx;|这相当于pushedx也就是将6压栈0040133E|.89442408movdwordptr[esp+8],eax;|这相当于pusheax也就是将5压栈00401342|.8B44241Cmoveax,dwordptr[esp+1C];|将6放到eax中00401346|.89442404movdwordptr[esp+4],eax;|这相当于pusheax也就是将6压栈0040134A|.C70424243040>movdwordptr[esp],00403024;|ASCII"%d%d%d",LF00401351|.E836060000call;\printf所以结果是656啦gcc的release和debug一样。。还是不死心。有在vc2005的debug下运行了一把发现结果是656??(vc2005debug汇编代码)00411B4Cmovdwordptr[ebp-0Ch],5;5==>[EBP-0c]00411B53moveax,dwordptr[ebp-0Ch]。;5==>eax00411B56movdwordptr[ebp-1194h],eax5==>[ebp-1194h]00411B5Cmovecx,dwordptr[ebp-0Ch];5==>ecx00411B5Faddecx,1;ecx++;ecx==6;00411B62movdwordptr[ebp-0Ch],ecx;6==>[ebp-0Ch]00411B65movesi,esp00411B67movedx,dwordptr[ebp-0Ch];6==>edx00411B6Apushedx;将6压栈00411B6Bmoveax,dwordptr[ebp-1194h];5==>eax00411B71pusheax;将5压栈00411B72movecx,dwordptr[ebp-0Ch];6==>ecx00411B75pushecx;将6压栈00411B76pushoffsetstring"%d%d%d\n"(41E9ACh)00411B7Bcalldwordptr[__imp__printf(423780h)]00411B81addesp,10h结果是656唉。看来结果就是656啦。。vc2005和以后版本都注意到了这个问题。我也说不上哪个正确,你又相信哪个呢?

⑹ 在linux下编译软件和第三方库时不分debug和release吗

Linux系统编译软件是有debug版和release版本的区分。Linux下在开发软件的过程中,会编译成debug版的,用于程序调试。以gcc/g++编译命令来说,在编译产生.o文件时(必须是产生.o文件的那一步才能编译成调试版),加入-g编译选项,编译出来的就是debug版,这个版本可以用gdb调试。
而如果软件开发完成需要发布的时候,就需要在编译时加上-O选项(不能加-g选项了),表示对代码进行编译优化,这时编译出来的软件就相当于是release版本了。

⑺ C语言编译器有哪些各有什么特点

C语言编译器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。

其中比较经典的VC++,微软的产品,编译器,链接器,运行,调试等功能于一体的强大开发工具,特点是功能十分强大,对于新手来说需要一段时间去摸索。
dev-C++是windows下一款开发c/c++的开发环境,使用gcc为编译器,遵循标准,功能比较强大,语法高量,可以进行单步调试(这对排除错误很重要),进行断点设置等功能,遵循C标准,是一款很强大的开发工具。
C-Free是一款支持多种编译器的专业化C/C++集成开发环境(IDE)。利用C-Free,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。
TC 2.0:Borland公司的产品,在dos界面下编译运行,小巧、灵活,但是不能使用鼠标。
win-TC:在tc2.0的基础上加上了界面,能够使用鼠标,具有语法高量,可以嵌入汇编等特点,对新手一些,拜托了不能用鼠标的困难。

编译器,简单讲,就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。

⑻ Dev C++中的TDM-GCC 4.9.2 64-bit Release是什么意思

TDM-GCC是编译器的类型。
4.9.2是版本号。
32-bit和64-bit是编译出的程序位数。
Debug是调试模式,程序会写入调试信息,程序会很大且较慢,但是方便程序员调试。
Release是发布模式,程序会进行优化,程序会小且运行较快。
Profiling和Debug差不多,只是这是用来分析CPU效率的,在某些编译器你是看不到这个的(例如VS)。

热点内容
安卓苹果通讯录怎么同步 发布:2025-03-17 09:58:12 浏览:172
ai缓存 发布:2025-03-17 09:48:27 浏览:920
翘嘴水滴轮什么配置 发布:2025-03-17 09:47:34 浏览:581
小蚁摄像机如何云存储 发布:2025-03-17 09:42:42 浏览:816
如何修改自己的名字和密码 发布:2025-03-17 09:32:20 浏览:787
宝马3系枪灰色轮毂是哪个配置 发布:2025-03-17 09:28:17 浏览:513
鸿蒙系统退回安卓系统怎么备份 发布:2025-03-17 09:14:33 浏览:614
数据库服务公司 发布:2025-03-17 08:56:43 浏览:495
我的世界服务器加载不了区块 发布:2025-03-17 08:56:39 浏览:817
如何给无线路由器设置密码 发布:2025-03-17 08:51:40 浏览:886