linux release 版本的区别,编译debug版本和编译release版本的区别

linux release 版本的区别,编译debug版本和编译release版本的区别大项目的版本编译会区别 debug 和 release 那 debug 和 release 会有什么区别呢 通过对比这两者的编译选项可以找到答案 1 对比编译过程 debug DOS LINUX DDEBUG VERSION fno builtin pipe Wall fsigned char g mlongcall DCPU PPC85XX mcpu 8548 mstrict ali

大项目的版本编译会区别debug和release,那debug和release会有什么区别呢?

通过对比这两者的编译选项可以找到答案。

1.对比编译过程

debug:

-DOS_LINUX  -DDEBUG_VERSION -fno-builtin -pipe -Wall -fsigned-char -g

-mlongcall -DCPU=PPC85XX    -mcpu=8548 -mstrict-align -fno-defer-pop -DTOR202 -DTOOL_FAMILY=gnu -DTOOL=gnu -DSYS32 -DXOS_TOOLCHAIN_4_1_2

-DSTRUCTURE_ATTR=”__attribute__ ((packed))” -DINSTALL_R_CPU=1

release:

-DOS_LINUX  -DRELEASE_VERSION -fno-builtin -pipe -Wall -fsigned-char -O2

-mlongcall -DCPU=PPC85XX    -mcpu=8548 -mstrict-align -fno-defer-pop -DTOR202 -DTOOL_FAMILY=gnu -DTOOL=gnu -DSYS32 -DXOS_TOOLCHAIN_4_1_2

-fno-strict-aliasing -fno-schedule-insns2  -fno-omit-frame-pointer

注:在使用-O2优化的时候要加上-fno-strict-aliasing -fno-schedule-insns2以防止强制类型转化出问题,加上-fno-omit-frame-pointer是强制使用frame pointer方便调试

对比debug和release编译选项可以发现最大的区别是是用-g选项还是使用-O2选项

2.对比链接过程

在进程链接时,debug和release的链接选项都一致,链接选项如下:

-rdynamic -Wl,–relax,-rpath,/version/lib

注:选项-rdynamic 用来通知链接器将所有符号添加到动态符号表中 (目的是能够通过使用 dlopen 来实现向后跟踪

-Wl选项告诉编译器将后面的参数传递给链接器

–relax,-rpath动态库链接选项

3.所以总的来说,debug和release版本的区别一个是编译.c的编译选项,debug使用了-g选项,release使用了-O2选项

阅读(1514) | 评论(0) | 转发(0) |

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231499.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月9日 上午8:01
下一篇 2025年12月9日 上午8:22


相关推荐

  • JS全局变量不可使用的问题

    JS全局变量不可使用的问题关于js中全局变量不可使用的问题项目开发中,为了降低代码冗余,对于不同页面的相同代码可以放在一个public文件中,我的一个项目就遇到一个问题,我在一个js文件中定义的全局变量,在HTML和其他的JS文件中无法使用。解决办法我发现的是,我的全局变量放到了document.ready函数中,所以导致出现了函数的闭包问题,将变量的声明拿到ready函数之外就可以了,希望可以帮助到跟我遇到相同问题…

    2022年5月6日
    51
  • xsync 脚本[通俗易懂]

    xsync 脚本[通俗易懂]xsync文件分发脚本#!/bin/bash#1获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0));thenechonoargs;exit;fi#2获取文件名称p1=$1fname=`basename$p1`echofname=$fname#3获取上级目录到绝对路径pdir=`cd-P$(dirname$p1…

    2022年6月2日
    50
  • KNIME简介

    KNIME简介KNIME1 na m 和 knife 一样 k 不发音 是德国康斯坦茨大学开发的一款功能强大的免费开源分析工具 KNIME 究竟有什么过人之处呢 个人总结大概有这么几点 商业模式 采用开源的方式来免费分发软件 但给付费客户提供更多具有特定附加值的服务 相比于某些如果只要处理超过一万行的数据就需要付费的软件 成本要少的多 易于使用 KNIME 拥有上千个模块 上百个可以直接运行的示例 是数据从业者的理想工具箱 图形化编程会让你非常容易上手 提供了良好的插件机制 PlugIn 你可以去开

    2026年3月20日
    1
  • Python–socketserve源码分析(一)

    classThreadingTCPServer(ThreadingMixIn,TCPServer):pass实现原理:s=socketserver.ThreadingTCPServer(参

    2021年12月18日
    47
  • 弗洛伊德算法怎么理解_弗洛伊德算法思想

    弗洛伊德算法怎么理解_弗洛伊德算法思想这个方法中,其中每一个顶点到另一个顶点最多就是两步。所以就是找到两个顶点的最近距离packagea;importjava.lang.reflect.Array;importjava.util.Arrays;publicclassFloydDemo{publicstaticvoidmain(String[]args){char[]di…

    2025年8月12日
    5
  • visual studio发生了未处理的异常_灾难性故障0x8000ffff

    visual studio发生了未处理的异常_灾难性故障0x8000ffff故障说明:使用vs2010时,由于文件创建MFC类时,移除文件后重新创建正确的基类,覆盖之前创建的文件造成,在“解决方案资源管理器”点击“cpp”文件弹出该提示。解决方法:在“解决方案资源管理器”,重命名cpp文件,双击打开后,改回原名即可。

    2026年3月4日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号